echarts图表进度条类型图

news/2024/10/21 23:07:10/

1、实现效果
左边是类别、数量,中间类似于进度条,右边是所占百分比
在这里插入图片描述
2、实现思路
x轴不显示,y轴的axisLabel用富文本,显示机器与台数;图表有两个数据组,分别用蓝色和灰色表示,两个柱子重合,灰色柱子在蓝色柱子下面;灰色柱子的label用富文本,显示占比。
3、实现代码
(1)在template里写个容器

<div class="chartStyle" ref="chartImplement"></div>

在style里定义容器的大小

.chartStyle {height: 300px;width: 700px;
}

(2)在data里声明一个变量

myChartLine:'',

在methods里写个配置图表的函数,输入参数为dataAll,包含了机具的类型、数量、占比等信息。数据格式为
dataAll = {
dataX: dataX,//类别
dataY: dataY,//数量
dataSum: dataSum,//总数
dataPercent: dataPercent,//占比
}

initSchedule(dataAll) {let _this = this;this.myChartLine = echarts.init(this.$refs.chartImplement)let myColor = ['#3C83FF']var option = {grid: { // 直角坐标系内绘图网格left: '25%', //grid 组件离容器左侧的距离,//left的值可以是80这样具体像素值,//也可以是'80%'这样相对于容器高度的百分比right: '15%',//containLabel: true   //gid区域是否包含坐标轴的刻度标签。为true的时候,// left/right/top/bottom/width/height决定的是包括了坐标轴标签在内的//所有内容所形成的矩形的位置.常用于【防止标签溢出】的场景},xAxis: { //直角坐标系grid中的x轴,//一般情况下单个grid组件最多只能放上下两个x轴,//多于两个x轴需要通过配置offset属性防止同个位置多个x轴的重叠。type: 'value', //坐标轴类型,分别有://'value'-数值轴;'category'-类目轴;//'time'-时间轴;'log'-对数轴splitLine: {show: false}, //坐标轴在 grid 区域中的分隔线axisLabel: {show: false}, //坐标轴刻度标签axisTick: {show: false}, //坐标轴刻度axisLine: {show: false}, //坐标轴轴线},yAxis: {type: 'category',axisTick: {show: false},axisLine: {show: false},axisLabel: {color: 'rgba(0,0,0,.7)',fontSize: 14,formatter: function(data) {var traceValue;for (var i = 0; i < dataAll.dataX.length; i++) {if (data === dataAll.dataX[i]) {traceValue = dataAll.dataY[i]break}}var arr = ['{a|' + data + '}','{b|' + traceValue + '}','{c|台}']return arr.join('')},textStyle: {rich: {a: {fontSize: 14,width: 100},b: {fontSize: 14,align: 'center',color: '#3C83FF',fontWeight: 600,},c: {padding: [0, 0, 0, 5],fontSize: 14,align: 'center',}}},},data: dataAll.dataX //类目数据,在类目轴(type: 'category')中有效。//如果没有设置 type,但是设置了axis.data,则认为type 是 'category'。},series: [ //系列列表。每个系列通过 type 决定自己的图表类型{name: '%', //系列名称type: 'bar', //柱状、条形图barWidth: 15, //柱条的宽度,默认自适应data: dataAll.dataPercent, //系列中数据内容数组label: { //图形上的文本标签show: true,position: 'right', //标签的位置offset: [0, -40], //标签文字的偏移,此处表示向上偏移40//formatter: '{c}{a}',//标签内容格式器 {a}-系列名,{b}-数据名,{c}-数据值formatter: function(data) {//.toFixed(0)去掉小数位,如果为2就是保留两位小数//let b = data.percent.toFixed(0) + "%";//subText = b;return '';},color: 'rgba(0,0,0,.7)', //标签字体颜色fontSize: 26 //标签字号},itemStyle: { //图形样式normal: { //normal 图形在默认状态下的样式;//emphasis图形在高亮状态下的样式barBorderRadius: 10, //柱条圆角半径,单位px.//此处统一设置4个角的圆角大小;//也可以分开设置[10,10,10,10]顺时针左上、右上、右下、左下color: function(params) {let num = myColor.length; //得到myColor颜色数组的长度return myColor[params.dataIndex % num]; //返回颜色数组中的一个对应的颜色值},}},zlevel: 1 //柱状图所有图形的 zlevel 值,//zlevel 大的 Canvas 会放在 zlevel 小的 Canvas 的上面},{name: '进度条背景',type: 'bar',label: { //图形上的文本标签show: true,position: 'right', //标签的位置offset: [0, 0], //标签文字的偏移,此处表示向上偏移40//formatter: '{c}{a}',//标签内容格式器 {a}-系列名,{b}-数据名,{c}-数据值formatter: function(data) {//.toFixed(0)去掉小数位,如果为2就是保留两位小数var traceValue;for (var i = 0; i < dataAll.dataX.length; i++) {if (data.name === dataAll.dataX[i]) {traceValue = dataAll.dataPercent[i]break}}var arr = ['{a|' + traceValue + '}','{b|%}']return arr.join('');},textStyle: {rich: {a: {fontSize: 14,color: 'rgba(0,0,0,0.7)',fontWeight: 560,padding: [0, 0, 0, 15],},b: {fontSize: 14,color: 'rgba(0,0,0,0.7)',padding: [0, 0, 0, 3],align: 'center',},}},},barGap: '-100%', //不同系列的柱间距离,为百分比。// 在同一坐标系上,此属性会被多个 'bar' 系列共享。// 此属性应设置于此坐标系中最后一个 'bar' 系列上才会生效,//并且是对此坐标系中所有 'bar' 系列生效。barWidth: 15,data: dataAll.dataSum,color: '#DEE0E3', //柱条颜色itemStyle: {normal: {barBorderRadius: 10}}},]};this.myChartLine.setOption(option, true);window.addEventListener("resize", () => {if (this.myChartLine) {this.myChartLine.resize();}});},

(3)调用该函数
这里假设有100台机器,初始化数据

initData() {var dataX = ['旋耕机1', '旋耕机2', '旋耕机3', '旋耕机4', '旋耕机5']var dataY = ['30', '20', '15', '25', '10'];var dataPercent = ['30', '20', '15', '25', '10'];var dataSum = new Array(dataX.length).fill(100);var data = {dataX: dataX,dataY: dataY,dataSum: dataSum,dataPercent: dataPercent,}this.initSchedule(data);},

在mounted中调用initData

mounted() {this.initData();},

完成


http://www.ppmy.cn/news/825128.html

相关文章

CNC数控加工中心编程好学吗

编程对加工中心来说中重要性不言而喻&#xff0c;不少打算在加工中心行业发展或者没有接触过加工中心操作的朋友心中都有这样的疑虑&#xff1f;加工中心编程难不难&#xff1f;好学不好学&#xff1f;目前加工中心编程分为两种&#xff0c;手工编程和软件编程。 手工编程就是…

自学python很难_自学Python很难吗,为何会看不进去!

原标题&#xff1a;自学Python很难吗&#xff0c;为何会看不进去&#xff01; 首先学习python一定要以实用性为导向&#xff01; 盲目看教程&#xff0c;结果大多是浅尝辄止&#xff0c;从入门到放弃。这里小九想给大家指引一条清晰的规划路&#xff01;如何在一个月内入门py…

SolidWorks学习日记

SolidWorks学习笔记&#xff08;一&#xff09; 一、前言二、SolidWorks分模块学习2.1软件整体布局与基础按键2.2草图、零件图、装配图 三、总结 一、前言 SolidWorks是比较低端&#xff08;相对于其他高端的曲面建模软件&#xff09;的3D建模软件&#xff0c;全球CAD市场份额第…

计算机数控机床英语文章,关于机械的英语文章学习

由于旋转机械结构复杂&#xff0c;故障特征及原因普遍存在模糊性和复杂性&#xff0c;对其实施故障诊断比较困难。下面小编整理了关于机械的英语文章&#xff0c;希望大家喜欢! 关于机械的英语文章摘抄 Features of CNC control CNC的控制特点 In previous the important featu…

matlab数控加工,基于MATLAB和UG的复杂型面数控加工编程

第 卷 第 期 年 月 井 冈山大 学学报 (自然科 学 版) () 文 章编 号&#xff1a;() 基 于 和 的复杂型面数控加工编程 周敬 勇&#xff0c; 谢世 坤 &#xff0c;张 杰&#xff0c;江 滔 (合肥 职业技 术 学院 &#xff0c;安徽 &#xff0c;合 肥 &#xff1b;井 冈山大 学 机…

女生学机械好还是计算机好,女生学机械制造及其自动化好吗

技校网专门为您推荐的类似问题答案 问题1&#xff1a; 机械制造及其自动化分模块 此类专业的发展前景都差不多&#xff0c;都属于理科类相对比较靠前的专业。只要社会的科学技术&#xff0c;工业制造不停&#xff0c;这些专业的发展都不错。关键在于你自己对那个比较感兴趣&…

CNC加工不难吗?教你五步玩转CNC数控机床

无论您身在何处&#xff0c;想要成为一名中高手&#xff0c;都必然要能够承受时间的历练&#xff0c;并且一定要不断提高自己的工作能力。在CNC加工行业中&#xff0c;如果要成为数控高手&#xff08;金属切削类&#xff09;&#xff0c;则一定要从大学毕业进入工厂。至少需要6…

五轴数控转台_你真的了解五轴加工吗?看完你会恍然大悟!

五轴加工(5 Axis Machining)&#xff0c;顾名思义&#xff0c;数控机床加工的一种模式。采用X、Y、Z、A、B、C中任意5个坐标的线性插补运动&#xff0c;五轴加工所采用的机床通常称为五轴机床或五轴加工中心。可是你真的了解五轴加工吗&#xff1f; 五轴技术的发展 几十年来&am…