EChart使用(折柱混合图,饼图)

news2024/11/17 9:54:47

在这里插入图片描述
ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器,底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。

ECharts的使用
安装
npm install echarts --save
使用

在使用时,我们需要先在HTML中为ECharts准备一个定义了宽高的区域以备存放图片

<div id="main" style="width: 300px;height:200px;"></div>

然后再javascript区域,我们需要做三件事

  • 基于准备好的dom,初始化echarts实例
  • 指定图表的配置项和数据
  • 使用刚指定的配置项和数据显示图表。
      var myChart = echarts.init(document.getElementById('main'));
      var option = {
        title: {
          text: '我的第一个ECharts'
        },
        tooltip: {},
        legend: {
          data: ['数量']
        },
        xAxis: {
          data: ['周一', '周二', '周三', '周四', '周五', '周六','周日']
        },
        yAxis: {},
        series: [
          {
            name: '数量',
            type: 'bar',
            data: [87, 70, 96, 79, 83, 77,93]
          }
        ]
      };
      myChart.setOption(option);

这样一个简单的ECharts就做好啦。
在这里插入图片描述

较复杂的ECharts

ECharts中大部分的设置都可以在ECharts的配置项手册中看到,根据设置option的不同值可以生产不同的图。
例如如下的折柱混合图(代码中增加了各个配置项的注释):

option = {
        legend: {//图例
            right: '16',//距离 右边框位置
            itemWidth: 8,//图标宽度
            itemHeight: 8,//图标大小
            itemGap: 32,
            lineStyle: {//线段类型
                type: 'solid'
            },
            data: [//图例数据
                {
                    name: '问题总数',
                    icon: 'rect'//图标形状为圆形
                },
                {
                    name: '在途问题数',
                    icon: 'rect'
                },
                {
                    name: '结案问题数',
                    icon: 'rect'
                },
                {
                    name: '超时问题数',
                    icon: 'rect'
                },
                {
                    name: '好评数',
                    icon: 'rect'
                },
                {
                    name: '问题解决率',
                    icon:
                        'path://m0.010277,5.945418l24.979446,0l0,4.109164l-24.979446,0l0,-1.109164z'//图标形状为线段
                },
                {
                    name: '按时完成率',
                    icon:
                        'path://m0.010277,5.945418l24.979446,0l0,4.109164l-24.979446,0l0,-1.109164z'
                },
                {
                    name: '好评率',
                    icon:
                        'path://m0.010277,5.945418l24.979446,0l0,4.109164l-24.979446,0l0,-1.109164z'
                }
            ],
            textStyle: {
                color: '#4E5969'//图例文字颜色
            }
        },
        tooltip: {//提示框组件
            trigger: 'axis',//触发方式--坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
            axisPointer: {//坐标轴指示器配置项。
                type: 'shadow',//类型--阴影指示器
                backgroundColor: '#F4F6F9'//阴影部分背景颜色
            },
            //提示框内容
            formatter: function(params) {
                return (
                    `<span style="font-size:12px">${params[0].axisValue}</span>`//标题
                     +
                    `<br>` +
                    params
                        .map(item => {//数据详情
                            let strVal;
                            let str = `<span style="display:inline-block;width:10px;height:10px;margin: 0 8px 0 0;
                    background-color:${item.color};"></span>`;
                            let val = item.data;
                            if (item.componentSubType == 'line') {
                                str = `<span style="display:inline-block; width: 12px;height: 3px; margin: 0 8px 5px 0;background-color: ${item.color}"></span>`;
                                val = (val * 100).toFixed(2) + '%';
                            }
                            return `<span style="display:flex; justify-content:space-between; margin-bottom: 2px;color:#4E5969;font-size:12px">
                                <span>${str}${item.seriesName}</span>
                                <span style="margin-left:16px">${val}</span>
						    </span>`;
                        })
                        .join(``)
                );
            }
        },
        dataZoom: [
            //X轴滑动条

            {
                type: 'slider', //滑动条
                realtime: true, //开启
                xAxisIndex: [0],
                start: 0, //初始化时,滑动条宽度开始标度
                end: 100, //初始化时,滑动条宽度结束标度
                fillerColor: '#dcdee2', // 滚动条颜色
                borderColor: '#fff',
                backgroundColor: '#fff',
                handleSize: 0, // 两边手柄尺寸
                showDetail: false, // 拖拽时是否展示滚动条两侧的文字
                brushSelect: false,//是否开启刷选功能。
                height: 8,//dataZoom-slider 组件的高度。
                showDataShadow: false,//是否在 dataZoom-silder 组件中显示数据阴影。
                moveHandleStyle: {
                    borderType: 'round'//移动手柄的样式
                },
                borderRadius:0,//圆角半径
                handleSize: '15%',//控制手柄的尺寸
                handleStyle:{//两侧缩放手柄的样式配置
                    borderWidth: 5,
                    borderCap:'round',
                    color:"#dcdee2",
                    borderColor:"#dcdee2"
                },
            },
            {
                type: 'inside', // 支持内部鼠标滚动平移
                start: 0,//初始状态为0-100,展示整个表
                end: 100,
                zoomOnMouseWheel: true, // 关闭滚轮缩放
                moveOnMouseWheel: false, // 开启滚轮平移
                moveOnMouseMove: true // 鼠标移动能触发数据窗口平移
            }
        ],
        dataset: {
            source: []//数据源
        },
        grid: {//直角坐标系内绘图网格
            left: 0,//grid 组件离容器左侧的距离。
            right: 0,
            bottom: 40,
            containLabel: true //grid 区域是否包含坐标轴的刻度标签。
        },
        xAxis: [//x轴
            {
                type: 'category',
                axisLabel: {
                    color: '#86909C'
                },
                axisLine: {
                    show: true,
                    lineStyle: {
                        color: '#F2F3F5'
                    }
                },
                data: ["1月","2月","3月","4月","5月","6月"]
            }
        ],
        yAxis: [//y轴
            {//左边的Y轴
                type: 'value',
                position: 'left',//位置:左边
                alignTicks: true, //左右刻度线对齐
                splitLine: {//坐标轴在 grid 区域中的分隔线。
                    lineStyle: {
                        color: '#F2F3F5'
                    }
                },
                axisLabel: {//坐标轴刻度标签的相关设置。
                    formatter: '{value}'
                }
            },
            {//右边的Y轴
                type: 'value',
                position: 'right',//位置:右边
                alignTicks: true,
                splitLine: {
                    lineStyle: {
                        color: '#F2F3F5'
                    }
                },
                axisLabel: {
                    formatter: value => {
                        return 100 * value + '%';//修改刻度标签的内容
                    }
                }
            }
        ],
        series: [//图表数据
            { name: '问题总数', type: 'bar', data: [100,85,86,74,96,82], barGap: 0 },  //name:柱状图名称   type:类型,bar柱状,line,折线
            { name: '在途问题数', type: 'bar', data: [55,45,49,56,75,75] },  //barGap:柱状图柱子之间的间距,yAxisIndex:对应的Y轴
            { name: '结案问题数', type: 'bar', data: [35,21,11,8,5,2] },
            { name: '超时问题数', type: 'bar', data: [10,14,26,10,16,5] },
            { name: '好评数', type: 'bar', data: [34,21,11,8,5,2] },
            { name: '问题解决率', type: 'line', data: [0.45,0.48,0.47,0.46,0.55,0.75], yAxisIndex: 1 },
            { name: '按时完成率', type: 'line', data: [0.58,0.47,0.96,0.85,0.75,0.69], yAxisIndex: 1 },
            { name: '好评率', type: 'line', data: [0.77,0.80,0.92,0.76,1.00,0.85], yAxisIndex: 1 }
        ],
        color: [//颜色
            '#165DFF',
            '#8CDAE5',
            '#41B75F',
            '#F27F42',
            '#FFC100',
            '#3270FF',
            '#41B75F',
            '#F27F42'
        ]
    };

在这里插入图片描述

又例如如下的饼图:

    option = {
        title: {
            text: '问题解决率',//标题名称
            subtext: '85%',//标题内容
            textStyle: {//标题名称样式
                fontSize: 12,
                color: '#4E5969',
                fontWeight: 400
            },

            subtextStyle: {//标题内容样式
                fontSize: 16,
                color: '#1D2129',
                fontWeight: 500
            },
            textAlign: 'center',//标题位置设置
            left: '82',
            top: '45%'
        },
        tooltip: {//提示框
            trigger: 'item',//提示框触发方式
            borderColor: '#fff',//提示框背景
            formatter: function(info) {//提示框内容
                return `<div style="color: #86909C;line-height:24px">${info.data.name}</div><div style="color: #4E5969;line-height:24px">${info.marker}${info.data.value}</div>`;
            },

            textStyle: {
                fontSize: '12'
            }
        },
        legend: {//图例设置
            orient: 'vertical',//图例布局朝向
            right: '0',//图例位置
            bottom: '0',
            icon: 'circle',//图例图标样式
            itemWidth: 8,//图例图标大小
            itemHeight: 8,
            itemGap: 12,//图例间距
            textStyle: {//图例文字样式
                color: '#4E5969',

            }
        },
        series: [//图的设置
            {
                name: '',
                type: 'pie',//类型
                radius: ['65%', '95%'],//圈的大小
                avoidLabelOverlap: true,//是否启用防止标签重叠策略
                left: '0',//位置设置
                top: 'middle',
                width: '180px',//大小设置
                height: '180px',
                label: {//饼图图形上的文本标签
                    show: true,
                    position: 'inner',//显示位置
                    formatter: '{c}',//内容
                    fontSize: '12',//大小
                    color: '#fff',//颜色
                    fontWeight: '400'//字重
                },
                labelLine: {
                    show: false
                },
                data: [{name:"1部",value:"80"},{name:"2部",value:"49"},{name:"3部",value:"85"},{name:"4部",value:"56"},{name:"5部",value:"73"},{name:"6部",value:"46"},{name:"7部",value:"70"},{name:"8部",value:"68"}]
            }
        ],
        color: [            '#165DFF',
            '#8CDAE5',
            '#41B75F',
            '#F27F42',
            '#FFC100',
            '#3270FF',
            '#41B75F',
            '#F27F42']
    };

在这里插入图片描述
以上ECharts中常见的两种图处理起来并不难,但是在设置option时需要耐心的查看配置项文档。

当然,ECharts中的还有很多其他类型的图,就不一一列举了,使用时可以参考ECharts中的配置文档。
在这里插入图片描述

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

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

相关文章

LLVM-3.5 —— 01记,编译 LLVM 3.5.0 clang and clang-query

包括编译&#xff1a;clang clang-tools-extra 0, prepare env sudo apt install llvm sudo apt install clang 使用最新的g 会出错。 1, source code $ git clone --recursive $ cd llvm-project $ git checkout llvmorg-3.5.0 $ cp -r ./clang ./llvm/tools/ $ mkdir llv…

机器学习-04-分类算法-02贝叶斯算法

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中分类算法&#xff0c;本篇为分类算法与贝叶斯算法部分。 本门课程的目标 完成一个特定行业的算法应用全过程&#xff1a; 懂业务会选择合适的算法数据处理算法训练算法调优算法融合 算法评估持续调优工程…

Java宝典-实战小项目:图书管理系统

目录 1. 功能介绍及效果演示2. 整体框架的搭建2.1 book包2.2 operation包2.3 user包2.4 Main 3. 相关功能的实现3.1 Add(新增图书)3.2 Borrow(借阅图书)3.3 Change(修改信息)3.4 Delete(删除图书)3.5 Exit(退出系统)3.6 Return(归还图书)3.7 Search(查找)3.8 Show(展示书架) 老…

Python绘图-14绘制3D图(下)

14.7绘制3D等高线图个性化colormap 14.7.1图像呈现 14.7.2绘图代码 import numpy as np # 导入numpy库&#xff0c;numpy是Python的一个强大的数值计算扩展程序库&#xff0c;支持大量的维度数组与矩阵运算。 import matplotlib.pyplot as plt # 导入matplotlib的绘图模块p…

hyperf 二十六 数据迁移 二

教程&#xff1a;Hyperf 参考文章hyperf 二十五 数据迁移 一-CSDN博客 根据之前写的数据迁移的文章&#xff0c;已经说明Hyperf\Database\Schema\Schema::create()实际运行Hyperf\Database\Schema\Grammars\MySqlGrammar::compileCreate()生成的sql字符串。 文档所谓"在…

Games101笔记-计算机图形学概述

光栅化&#xff1a;把三维空间的几何形体显示在屏幕上 实时&#xff1a;每秒30帧的画面 曲线和曲面&#xff1a; 如何表示一条光滑曲线&#xff0c;如何表示曲面如何用简单的曲面通过细分的方法得到更复杂的曲面在形状发生变化时&#xff0c;面要如何变化&#xff0c;如何保…

STM32F103 CubeMX 定时器输出PWM控制呼吸灯

STM32F103 CubeMX 定时器输出PWM控制呼吸灯 1. 生成代码1. 1 配置外部时钟&#xff0c;SWD口1.2 配置定时器31.3 配置定时器2 2. 代码编写的部分 使用的cubmx 软件的版本&#xff1a;6.2.0 最新版本 6.10&#xff08;2024年3月11日&#xff09; 1. 生成代码 1. 1 配置外部时钟…

从零学算法287

287.给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。 你设计的解决方案必须 不修改 数组 nums 且只…

数字电子技术笔记——组合逻辑功能

1.Adder&#xff08;加法器&#xff09; Half-Adder&#xff08;半加器&#xff09; Full-Adder&#xff08;全加器&#xff09; 74LS283(4-bit parallel adders) carry look-ahead adder &#xff08;超前进位加法器&#xff09; 2.Comparator&#xff08;比较器&#xff09;…

基于Python3的数据结构与算法 - 14 队列

目录 一、定义 1. 环形队列 2. 自定义队列 二、队列的内置模块 1. 双向队列 一、定义 队列&#xff08;Queue&#xff09;是一个数据集合&#xff0c;仅允许在列表的一端进行插入&#xff0c;另一端进行删除。进行插入的一端称为队尾&#xff08;rear&#xff09;&#…

python请求url下载网站中的视频

举例网站&#xff1a;Mini Impresora Trmica Bluetooth Porttil Inalmbrico | Envo gratis ctrlF4 先搜mp4 搜不到就搜m3u8 了 视频格式如下 &#xff08; AVI&#xff08;Audio Video Interleave&#xff09;&#xff1a;是一种由微软公司开发的音频和视频文件格式。MOV&…

02_electron快速建立项目

一、安装 yarn 在此之前可以先安装 git&#xff1a;Git - Downloads (git-scm.com) 下面就是 yarn 安装的代码&#xff0c;在终端输入即可。 npm install --global yarn 检查是否安装成功&#xff1a; yarn --version 二、快速建立一个electron项目 其实在Getting Started - …

【HarmonyOS】鸿蒙开发之工具安装与工程项目简介——第1章

鸿蒙开发工具包下载与使用 鸿蒙开发工具包下载 下载deveco studio开发工具包 系统要求: Windows 操作系统&#xff1a;Windows 10/11 64 位 内存&#xff1a;8GB 及以上 硬盘&#xff1a;100GB 及以上 分辨率&#xff1a;1280*800 像素及以上macOS 操作系统&#xff1a;mac…

【rk3229 android7.1.2 替换默认输入法】

问题平台描述 问题描述解决方法 郑重声明:本人原创博文&#xff0c;都是实战&#xff0c;均经过实际项目验证出货的 转载请标明出处:攻城狮2015 Platform: Rockchip CPU:rk3229 OS:Android 7.1.2 Kernel: 3.10 问题描述 国内客户&#xff0c;觉得安卓自带的输入法不好用&#x…

LeetCode刷题---每月交易I

LeetCode官方题解 解题思想&#xff1a; 首先按照日期和国家/地区进行分组 对分组后的结果求解&#xff0c;使用IF函数进行过滤 涉及函数 1.在对日期截取时&#xff0c;使用了MySQL中的DATE_FORMAT函数&#xff0c;将日期转换为指定格式的日期 //2024-03-11,截取为 2024-03-…

【数据可视化】数据可视化入门前的了解

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. 数据可视化概述2.1 数据可视化的定义及特性2.1.1 数据可视化的定义2.1.2 特性 2.2 数据中蕴含的信息2.3 数据可视化的作用2.3.1 模式2.3.2 关系2.3.3 异常 3. 数据可视化流程4. 数据可视化工具4.1 ECharts4…

如何在Linux部署FastDFS文件服务并实现无公网IP远程访问内网文件——“cpolar内网穿透”

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

记录一下某外资的面试

文章目录 标题English introduction标题What did u do in this gap time标题What’S the big challenge in your work experience标题 4、介绍一个自己熟悉的项目或最近的项目&#xff0c;包括项目的背景&#xff0c;使用的技术&#xff0c;在里面的角色标题5、项目中有多少个微…

力扣--深度优先算法/回溯算法78.子集

思路分析&#xff1a; 首先&#xff0c;定义了一个类 Solution&#xff0c;其中包含一个成员变量 result 用于存储最终的所有子集。在类中定义了一个私有成员函数 dfs&#xff0c;用于执行深度优先搜索&#xff0c;生成所有可能的子集。主函数 subsets 初始化结果&#xff0c;…

Vue2(4)——iHRM组织架构

组织架构-树组件应用 树形组件-用层级结构展示信息&#xff0c;可展开或折叠。 属性设置 data(绑定数据)props(设置属性)- children(设置子节点的字段名)/ label(设置显示内容的字段名)default-expand-all(默认展开所有节点) 组织架构-树组件自定义结构 显示右侧结构 节点结…