Echarts示例

一.概念

ECharts(Enterprise Charts)是百度开源的一个基于JavaScript的可视化图表库。它提供了多种常见的数据可视化图表,包括折线图、柱状图、散点图、饼图、雷达图等等。使用ECharts,用户可以通过简单的配置和接口调用来创建交互式和可定制的图表。

ECharts具有以下特点:

  1. 简单易用:ECharts使用简单的配置选项即可创建各种图表,并提供丰富的接口和事件来满足用户的需求。
  2. 强大的交互能力:ECharts支持图表的交互,包括数据筛选、数据联动和图表切换等功能,使用户能够以不同的方式对数据进行分析和展示。
  3. 完全开源:ECharts是一个完全开源的项目,用户可以根据自己的需求进行修改和扩展。
  4. 跨平台支持:ECharts可以在各种平台上运行,包括PC端、移动端和大屏可视化。
  5. 大数据支持:ECharts对于大规模数据的可视化有良好的支持,可以进行数据的聚合和分级显示。

ECharts广泛应用于数据分析、数据可视化、BI系统、大屏展示等领域。它已经成为一个流行的图表库,并且得到了广大开发者和用户的认可。

先看一下我们的展示图

我们需要实现四个功能:

 1.最受欢迎六个菜品

 2.三餐营收占比

 3.近七天营业额

 4.月营业额

 

二.在typescript+vue3项目中使用echarts

  之前学校让做的饿了么后台管理系统,添加了一个统计功能,实现一下菜品信息和营业额的展示,下面我在该项目中使用一下echarts

1.安装echarts

 我们需要在项目中安装echarts作为依赖

npm install echarts

2.配置echarts

我们在src/echart/echarts.ts中配置

// 引入 echarts 核心模块。
import * as echarts from 'echarts/core';
//引入柱状图和折线图组件。
import { BarChart,LineChart,PieChart } from 'echarts/charts';
// 引入标题、提示框、网格、数据集和数据转换器组件。
import {
    TitleComponent,
    TooltipComponent,
    GridComponent,
    // 数据集组件
    DatasetComponent,
    // 内置数据转换器组件 (filter, sort)
    TransformComponent
} from 'echarts/components';
//引入标签布局和通用过渡动画特性。
import { LabelLayout, UniversalTransition } from 'echarts/features';
// 引入 Canvas 渲染器。
import { CanvasRenderer } from 'echarts/renderers';
 
import type {
    // 系列类型的定义后缀都为 SeriesOption
    BarSeriesOption,
    LineSeriesOption
} from 'echarts/charts';
 
import type {
    // 组件类型的定义后缀都为 ComponentOption
    TitleComponentOption,
    TooltipComponentOption,
    GridComponentOption,
    DatasetComponentOption
} from 'echarts/components';
import type {
    ComposeOption,
} from 'echarts/core';
 
// 通过 ComposeOption 来组合出一个只有必须组件和图表的 Option 类型
type ECOption = ComposeOption<
    | BarSeriesOption
    | LineSeriesOption
    | TitleComponentOption
    | TooltipComponentOption
    | GridComponentOption
    | DatasetComponentOption
>;
 
/** 
    注册必须的组件,包括标题、提示框、网格、数据集、数据转换器,
    以及柱状图、折线图、标签布局、通用过渡动画和 Canvas 渲染器。
*/
echarts.use([
    TitleComponent,
    TooltipComponent,
    GridComponent,
    DatasetComponent,
    TransformComponent,
    BarChart,
    LineChart,
    PieChart,
    LabelLayout,
    UniversalTransition,
    CanvasRenderer
]);
// 导出
export default echarts;

 3.在我们需要的页面组件中引入

<template>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <el-card shadow="hover" id="main1" style="width: 600px; height: 300px;float: left;"></el-card>
    <el-card shadow="hover" id="main2" style="width: 600px; height: 300px;float: left;"></el-card>
    <el-card shadow="hover" id="main3" style="width: 600px; height: 330px;float: left;"></el-card>
    <el-card shadow="hover" id="main4" style="width: 600px; height: 330px;float: left;"></el-card>
  </template>
   
  <script lang="ts">
   
  //按需引入
  import { defineComponent, onMounted } from "vue";
   
  //引入创建的echarts.ts文件
  import echarts from "../echart/echart";
   
  export default defineComponent({
    setup() {
      /**
       * 在使用init方法初始化图表之前,确保DOM元素已经被正确加载。在Vue组件中,
       * 可以使用onMounted钩子函数来确保在DOM准备就绪后再执行初始化操作。
       */
      //如果不使用这个钩子可能会报错
      onMounted(() => {
        /**
          !是非空断言运算符,表示确保找到了匹配的元素,如果找不到元素或其值为
      null 或 undefined,会引发错误。
          document.getElementById("main") 是调用 getElementById 方法,
      传入参数 “main”,用于获取具有 id 为 “main” 的元素。
          echarts.init() 方法用于初始化一个 echarts 图表实例。
      */
   
        // 基于准备好的dom,初始化echarts实例
        var chartDom = document.getElementById("main1")!;
        var myChart = echarts.init(chartDom);
   
        var chartDom1 = document.getElementById("main2")!;
        var myChart1 = echarts.init(chartDom1);

        var chartDom2 = document.getElementById("main3")!;
        var myChart2 = echarts.init(chartDom2);

        var chartDom3 = document.getElementById("main4")!;
        var myChart3 = echarts.init(chartDom3);
      
        //还可以这样一起写
        // var myChart = echarts.init(document.getElementById("main")!);
   
        // 指定图表的配置项和数据
        var option = {
          title: {
            text: "菜品销量(最受欢迎6个菜)",
          },
          tooltip: {},
         
          xAxis: {
            data: ["红烧肉", "鱼香肉丝", "宫保鸡丁", "回锅肉", "水煮肉片", "大盘鸡"],
          },
          yAxis: {},
          series: [
            {
              name: "销量",
              type: "bar",
             // data: [5, 20, 36, 10, 10, 20],
              data:[
                {
                   value:54,
                   itemStyle:{
                        color:'#409eff'
                    }
                },
                {
                   value:42,
                   itemStyle:{
                        color:'#409eff'
                    }
                },
                {
                   value:65,
                   itemStyle:{
                        color:'#409eff'
                    }
                },
                {
                   value:54,
                   itemStyle:{
                        color:'#409eff'
                    }
                },
                {
                   value:59,
                   itemStyle:{
                        color:'#409eff'
                    }
                },
                {
                   value:76,
                   itemStyle:{
                        color:'#409eff'
                    }
                },
              ]
            },
          ],
        };
        // 指定图表的配置项和数据
      var  option2 = {
        title: {
            text: "三餐营收占比",
          },
          tooltip: {},
          legend: {
            data: ["销量"],
          },
            series: [
                {
                type: 'pie',
                data: [
                    {
                    value: 122312,
                    name: '午饭营收',
                    },
                    {
                    value: 50123,
                    name: '早餐营收'
                    },
                    {
                    value: 81231,
                    name: '晚餐营收'
                    }
                ]
                }
            ]
            };

      //折线图
      var  option3 = {
        title: {
            text: "近七天营业额",
          },
          tooltip: {},
            xAxis: {
                type: 'category',
                data: ['11.01', '11.02', '11.03','11.04','11.05','11.06','11.07']
            },
            yAxis: {
                type: 'value'
            },
            series: [
                {
                data: [7211,6421,8213,10012,6001,5991,9123],
                type: 'line'
                }
            ]
            };

      //横向柱状图
      var option4 = {
        title: {
            text: "月营业额",
          },
          tooltip: {},
        dataset: {
            source: [
            ['money', 'month'],
            [231203, '一月'],
            [213213, '二月'],
            [151312, '三月'],
            [194123, '四月'],
            [283131, '五月'],
            [183123, '六月'],
            [251231, '七月'],
            [173123, '八月'],
            [273123, '九月'],
            [293123, '十月'],
            [183211, '十一月'],
            [201231, '十二月']
            ]
        },
        xAxis: {},
        yAxis: { type: 'category' },
        series: [
            {
            type: 'bar',
            encode: {
                // 将 "money" 列映射到 X 轴。
                x: 'money',
                // 将 "month" 列映射到 Y 轴。
                y: 'month'
            }
            }
        ]
        };



        // 使用刚指定的配置项option和数据显示图表myChart。
        myChart.setOption(option);
        // 使用刚指定的配置项option和数据显示图表myChart。
        myChart1.setOption(option2);
        //折线图
        myChart2.setOption(option3);
        //横向1-12月营业额
        myChart3.setOption(option4)
      });
   
      return {};
    },
  });
  </script>
   
  <style scoped></style>

通过以上配置就可以实现我们所需要的功能了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/121957.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

rabbitmq入门学习

写在前面 本文看下rabbit mq的基础概念以及使用。 1&#xff1a;简单介绍 为了不同进程间通信的解耦&#xff0c;出现了消息队列&#xff0c;为了规范消息队列的具体实现&#xff0c;Java制定了jms规范&#xff0c;这是一套基于接口的规范&#xff0c;因此是绑定语言的&…

人脸识别中的人工智能

随着人工智能技术的快速发展&#xff0c;人脸识别作为其中的一个重要应用领域&#xff0c;已经在各个行业和场景中展现出了巨大的潜力和价值。人脸识别技术通过对人脸图像进行采集、处理和分析&#xff0c;基于人工智能算法对人脸进行识别和验证&#xff0c;并在安防监控、金融…

安防监控EasyCVR视频汇聚平台无法接入Ehome5.0是什么原因?该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、回放…

彻底删除Ubuntu双系统(联想小新2022)

彻底卸载Ubuntu双系统 以里联想小新pro16 i9-12900h为例子 把开机启动项设为默认Windows启动 以联想电脑为例子&#xff0c;关机后一直点击Fn F2进入Bios把windows启动项移到最上面&#xff0c;这样可以开机默认启动windows了删除ubuntu系统分区 使用磁盘管理软件 DiskGeniu…

多无人机在线路径规划的新算法

南京航空航天大学自动化学院使用NOKOV度量动作捕捉系统获取多架无人机的精确位置信息&#xff0c;实现多架无人机协同实时路径规划。 研究背景 近年来&#xff0c;无人机越来越多地应用于执行战场侦察、目标识别、跟踪打击等任务。 由多架无人机协同执行任务&#xff0c;通过…

Luatos Air700 改变BL0942串口波特率

LuatOs 改变模块串口波特率思路参照 luatos 改变AIR530串口波特率 BL0942默认串口波特率可以通过SCLK_BPS引脚接3.3V电源设置到9600bps 但如果调整到38400bps需要修改0x19寄存器 bl0942 v1.06版的特殊寄存器说明&#xff0c;注意早期版本特殊寄存器说明存在错误 完整代码 mai…

Kubernetes 问题排查全景图

伴随着混沌的微服务架构&#xff0c;多语言和多网络协议混杂。以及下沉的基础设施能力屏蔽实现细节&#xff0c;问题定界越发困难。 企业急需一种支持多语言&#xff0c;多通信协议的技术&#xff0c;并在产品层面尽可能覆盖软件栈端到端的可观测性需求。 「Kubernetes 问题排查…

java版直播商城免费搭建平台规划及常见的营销模式+电商源码+小程序+三级分销+二次开发

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

idea使用lombok编译问题

idea编译报错问题如下&#xff1a; java: You arent using a compiler supported by lombok, so lombok will not work and has been disabled.Your processor is: com.sun.proxy.$Proxy26Lombok supports: OpenJDK javac, ECJ解决方案 1.先将jdk替换为openjdk,随后将项目配置…

如何搭建一个自定义UI框架的Playground(一)

文章目录 初衷需求技术选型详细设计&#xff08;一&#xff09;1.业务设计2.交互设计3.程序设计3.1 游戏生命周期设计3.2 UI界面管理设计 初衷 想要比较系统、深入地了解游戏UI框架的设计与开发&#xff0c;就需要自己实践去开发一个可以预览的UI项目&#xff0c;但是目前没有…

Docker快速搭建Drupal内容管理系统并远程访问

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525;个人专栏:《Linux深造日志》《C干货基地》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal…

在线CRM系统的安全性高吗?企业该如何选择?

在线CRM系统具备门槛低、功能不打折扣、部署周期短等优点&#xff0c;相比本地化部署更加适合中小企业。但很多企业在选型软件时会顾虑在线CRM系统的安全性高吗&#xff1f; 通常情况下厂商会比中小企业更有实力保证数据安全&#xff0c;从技术手段保护企业隐私不被盗用。 数…

数据结构与算法之美学习笔记:16 | 二分查找(下):如何快速定位IP对应的省份地址?

目录 前言二分查找的变形问题变体一&#xff1a;查找第一个值等于给定值的元素变体二&#xff1a;查找最后一个值等于给定值的元素变体三&#xff1a;查找第一个大于等于给定值的元素变体四&#xff1a;查找最后一个小于等于给定值的元素 解答开篇内容小结 前言 本节课程思维导…

第三章:人工智能深度学习教程-人工智能与机器学习与深度学习之间的区别

人工智能基本上是通过一组规则&#xff08;算法&#xff09;将人类智能融入机器的机制。人工智能是两个词的组合&#xff1a;“人工”是指由人类或非自然物体制造的东西&#xff0c;“智能”是指相应地理解或思考的能力。另一个定义可能是“人工智能基本上是训练机器&#xff0…

KeyShot for 3dMax插件教程

KeyShot for 3dMax插件教程 KeyShot是一款先进的3D渲染和动画软件&#xff0c;通过直观、精简的用户界面和革命性的动画工作流简化了整个媒体创建过程&#xff0c;可以实时创建完全渲染的动画。 快速 立即查看结果。 这就是KeyShot渲染引擎的功能&#xff1a;您所做的每一个更…

鸿蒙原生应用开发-DevEco Studio远程真机的使用

一、先看看远程真机支持的机型情况相比本地和模拟器多了很多机型 二、远程真机使用的相关说明 该特性在DevEco Studio V2.2 Beta1及更高版本中支持。 如果开发者没有真机设备资源&#xff0c;则不能很方便的调试和验证HarmonyOS应用&#xff0c;为方便开发者&#xff0c;De…

U-Mail邮件系统安全登录解决方案

企业邮箱是企业对内对外商务往来的主要通信工具&#xff0c;并且企业邮箱里面还包含了大量企业内部隐私信息、商业机密等&#xff0c;很容易成为黑客的攻击目标。其中邮件盗号是企业邮箱遭受攻击的主要形式&#xff0c;一旦企业邮箱密码被黑客盗取&#xff0c;黑客不仅可以利用…

中国人民大学与加拿大女王大学金融硕士——在金融领域里持续探索、成长

在金融领域里持续探索、成长&#xff0c;这是一个永无止境的旅程。在这个领域里&#xff0c;机遇与挑战并存&#xff0c;未知与已知交织&#xff0c;需要我们时刻保持敏锐的洞察力和扎实的基本功。金融市场的变化日新月异&#xff0c;我们需要时刻关注市场动态&#xff0c;了解…

Tcl语言:SDC约束命令create_generated_clock详解(下)

相关阅读 Tcl语言https://blog.csdn.net/weixin_45791458/category_12488978.html?spm1001.2014.3001.5482 设定生成时钟特性 前文的末尾提到&#xff0c;当使用-divide by或-multiply_by选项创建生成时钟时&#xff0c;会根据master clock的时钟周期派生出生成时钟的周期&am…
最新文章