Echarts示例

news2024/11/26 0:54:35

一.概念

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.coloradmin.cn/o/1188867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Python的requests库采集充电桩LBS位置经纬度信息

目录 一、引言 二、采集数据的流程 1、获取充电桩的URL地址 2、发送HTTP请求获取数据 3、解析数据获取经纬度信息 4、存储数据 三、代码实现 四、注意事项和优化建议 五、充电桩数据的后续利用 六、总结 一、引言 随着电动汽车的普及&#xff0c;充电设施的建设也日…

scss 实用教程

变量 $ 定义变量 $link-color: blue;变量名可以与css中的属性名和选择器名称相同 使用变量 a {color: $link_color; }$highlight-border: 1px solid $link_color;中划线和下划线相互兼容&#xff0c;即中划线声明的变量可以使用下划线的方式引用&#xff0c;反之亦然。 $li…

Power Apps-“编辑“窗体组件

插入一个“编辑”窗体 连接数据源 在该组件的Item函数中编辑筛选符合条件的唯一记录 LookUp(表名,列名值) LookUp参考文档&#xff1a;Filter、Search 和 LookUp 函数&#xff08;包含视频&#xff09; - Power Platform | Microsoft Learn 数据表里的数据就一一对应出现在了组…

邮箱哪家强?哪个牌子邮箱好用

邮箱在国内外使用情况不太一样&#xff0c;国内一般都是工作中需要用邮箱&#xff0c;直接使用公司发的企业邮箱就可以了&#xff0c;个人一般自己需要使用邮箱频率比较少&#xff0c;大多是用来注册其他平台信息&#xff0c;接受验证码、电子发票等等&#xff0c;使用不频繁。…

若依分离版——使用Knife4j 自动生成接口文档

背景&#xff1a; 前后端分离程序&#xff0c;如果需要前端开发人员和后端开发人员配合开发&#xff0c;则需要将接口文档并显性给前端人员 解决办法&#xff1a; 使用knife4j替代若依自带的swagger&#xff0c;因为knife4j是在swagger基础上包装的&#xff0c;Knife4j不仅具…

解析几何@平面上点到直线的距离@点到平面的距离@空间中点到直线的距离

文章目录 平面上点到直线的距离点到平面的距离小结 角平分面问题例 点到直线的距离 平面上点到直线的距离 设坐标平面上有点 P ( x 1 , y 1 ) P(x_1,y_1) P(x1​,y1​)和直线 l : A x B y C 0 l:AxByC0 l:AxByC0, A , B A,B A,B不全为0点 P P P到直线 l l l的的距离的算法推…

【网络】epoll理论 + 实践(LT模式服务器和ET模式服务器)详细讲解

epoll 前言正式开始epoll相关的接口epoll_createepoll_ctlepoll_wait epoll原理硬件上的数据是怎么交给上层的创建epoll模型epoll模型中的红黑树epoll中的就绪队列回调方法前面三个接口在模型中的体现一些细节 编写epoll服务器小组件正式开始编写对epoll接口进行封装epoll_crea…

KeyShot for 3dMax插件教程

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

10款实用的市场分析工具,你知道几个?

市场分析是在成功营销战略中的一个核心组成部分&#xff0c;我们应当深度理解当前市场&#xff0c;进行适当的决策&#xff0c;并对产品和服务产生高度的信心。如果你还在寻找一款能帮助你全方位了解市场现状&#xff0c;预测未来趋势&#xff0c;以及提供深入见解的工具&#…

Hertz中的CORS问题。

前言 字节跳动开源框架Hertz,可能存在的CORS的跨域问题 正文 文档信息 跨源资源共享 | CloudWeGo 文档中描述 | AllowAllOrigins | 用于设置允许来自任意 origin 的客户端访问服务端资源&#xff0c;默认为 false&#xff0c;所以我们在仅仅设置AllowAllOrigins true的时候…

将程序添加至右键菜单

将程序添加至右键菜单 手动导入 如果要将cmder添加至右键菜单。可以通过编写reg注册表方式添加 也可以在路径HKEY_CLASSES_ROOT\Directory\Background\shell中右击添加 创建项commadn 编写reg注册表 [HKEY_CLASSES_ROOT\Directory\Background\shell\cmder]为注册表地址 Wi…

以吉祥物宣传片实力出圈!吉祥物三维动画宣传片怎么制作?

首届学青会吉祥物“壮壮”、“美美”在宣传片中展示了举重、打羽毛球、游泳等运动姿态&#xff0c;靠着可爱的虚拟形象萌出圈&#xff01; *图片源于网络 在数字化时代&#xff0c;吉祥物三维动画宣传片已成为众多大型活动、品牌宣发、文旅城市宣传的一大途径&#xff0c;如学…

文心一言 VS 讯飞星火 VS chatgpt (131)-- 算法导论11.2 3题

三、用go语言&#xff0c;Marley 教授做了这样一个假设&#xff0c;即如果将链模式改动一下&#xff0c;使得每个链表都能保持已排好序的顺序&#xff0c;散列的性能就可以有较大的提高。Marley 教授的改动对成功查找、不成功查找、插入和删除操作的运行时间有何影响? 文心一…

Windows下Tesseract OCR引擎库的编译和下载

系列文章目录 文章目录 系列文章目录前言一、简介二、使用步骤1.Tesseract库下载1.1 Vcpkg下载1.2 添加环境变量1.3 vcpkg运行1.4 下载Tesseract库 2.引用到项目2.1 把Tesseract关联的dll/lib/h都放入指定的目录2.2 添加头文件2.3 参照lib 总结 前言 网上很多关于Tesseract OC…

晶振分频【FPGA】

所以数据对齐晶振。 6分频&#xff1a;【1】 module divider_six // 6分频 【0~2】 ( input wire sys_clk , //系统时钟 50MHz input wire sys_rst_n , //全局复位 output reg clk_out //对系统时钟 6 分频后的信号 );reg [1:0] cnt; //用于计数的寄存器 //cnt:计数器从 0 到…

JAVA数据类型及自动类型转换、强制类型转换

1.数据类型的分类 2. 数据类型的自动类型转换 3.强制类型转换

08 # 手写 filter 方法

什么是 filter filter() 方法创建给定数组一部分的浅拷贝&#xff0c;其包含通过所提供函数实现的测试的所有元素。如果没有元素通过测试&#xff0c;则返回一个空数组。 ele&#xff1a;表示数组中的每一个元素index&#xff1a;表示数据中元素的索引array&#xff1a;表示数…

docker部署tomcat

1.下载tomcat镜像 尽量去下载最新版本 直接输入docker pull tomcat 后面不跟版本号(要是跟版本号&#xff0c;你还要去官网去查看是否有此版本&#xff0c;太麻烦了) 2.查看镜像 3.通过镜像去run启动容器 -d 就是后台运行 --name 给容器取个新名字 -p 3355:8080…

速看!2024年最具实用性的15款在线画图工具

在数字时代&#xff0c;绘图软件已经成为了创意表达和信息传达的不可或缺的工具。而随着互联网的发展&#xff0c;越来越多的在线画图软件应运而生&#xff0c;方便了人们随时随地创建、编辑和分享图像。本文将为你介绍15款热门且好用的在线画图软件&#xff0c;深入探讨每款软…

使用 promise 重构 Android 异步代码

背景 业务当中写Android异步任务一直是一项挑战&#xff0c;以往的回调和线程管理方式比较复杂和繁琐&#xff0c;造成代码难以维护和阅读。在前端领域中JavaScript其实也面临同样的问题&#xff0c;Promise 就是它的比较主流的一种解法。 在尝试使用Promise之前我们也针对And…