echarts绘制一个柱状折线图

其他echarts: 

echarts绘制一个环形图

 echarts绘制一个饼图 

echarts绘制一个环形图2

效果:

代码:

<template><div class="wrapper"><!-- 柱状图 --><div v-if="type == 'new_bar'" ref="barChart" id="barChart"></div><!-- 柱状图加折线图 --><div v-else ref="barChart2" id="barChart2"></div></div>
</template><script>
export default {mixins: [],components: {},props: {table: {type: Object,default: {datas: {},color: [],},},type: {type: String,default: "new_bar",},},data() {return {lineData: null,legendData: [], //一共有几个数据xAxis: {}, // X轴的显示yAxis: [], // Y轴的显示series: [],};},created() {},mounted() {},watch: {table: {handler(newVal) {if (newVal) {// 进行数据处理操作// console.log("柱状图", newVal);if (this.type == "new_barLine") {// 去重判断一共有几组数据this.legendData = this.$common.distinct(newVal.datas, "COL");this.legendData = this.legendData.map((item) => {return item.COL;});// 将所有数据根据col属性名相同的合并为一个新的对象this.lineData = this.$common.groupByProperty(newVal.datas, "COL");this.xAxis = [{type: "category",data: this.lineData[this.legendData[0]].map((item) => {return item.NAME;}),axisLabel: {rotate: 45, // 设置 x 轴名称逆时针旋转角度},axisPointer: {type: "shadow",},},];this.legendData.forEach((item, index) => {if (index > 0) {// 确定Y轴this.yAxis.push({type: "value",min: 0,// interval: 5,axisLabel: {formatter: "{value}",},});// 增加线this.series.push({name: item,type: "line",smooth: true, //线变得有弧度symbol: "none", //隐藏小圆点color: newVal.color[index],areaStyle: {//折线图下边阴影color: {type: "linear",x: 0,y: 0,x2: 0,y2: 1,colorStops: [{offset: 0,color: newVal.color[index] + "4C", // 渐变起始颜色},{offset: 1,color: newVal.color[index] + "19", // 渐变结束颜色},],},},tooltip: {valueFormatter: (value) => {return value + "";},},data: this.lineData[item].map((item, index) => {return item.VALUE || item.NUM ? item.VALUE || item.NUM : 0;}),});}});} else {this.xAxis = [{type: "category",data: this.table.datas.map((item, index) => {return item.NAME;}),axisLabel: {rotate: 45, // 设置 x 轴名称逆时针旋转角度},axisPointer: {type: "shadow",},},];this.yAxis.push({type: "value",min: 0,// interval: 5,axisLabel: {formatter: "{value}",},});}setTimeout(() => {this.init();});}},},},methods: {init() {let option = {tooltip: {trigger: "axis",axisPointer: {type: "cross",crossStyle: {color: "#999",},},formatter: (params) => {// 如果是单一的柱状图就从空开始加等于let result =params[0].name + (this.type == "new_bar" ? "" : ":<br>");for (let i = 0; i < params.length; i++) {let seriesName = params[i].seriesName; // 获取系列名称let value = params[i].value; // 获取当前数据的value// 根据系列名称进行判断,执行不同的逻辑result += seriesName + ": " + (value ? value : 0) + "<br>";}return result;},},grid: {top: "30",left: "40", // 调整y轴距离左侧的距离bottom: "25%",},toolbox: {feature: {// dataView: { show: true, readOnly: false },// magicType: { show: true, type: ["line", "bar"] },// restore: { show: true },// saveAsImage: { show: true },},},legend: {data: this.legendData,},xAxis: this.xAxis,yAxis: this.yAxis,series: [{name: this.lineData ? this.lineData[this.legendData[0]][0].COL : "",type: "bar",color: this.table.color[0],label: {show: false, // 显示标签position: "top", // 标签位置formatter: "{c}", // 标签内容格式化color: "black", // 标签颜色},tooltip: {valueFormatter: (value) => {return value + "";},},itemStyle: {borderRadius: [10, 10, 0, 0],// color: this.table.color[0],},data: this.table.datas.map((item, index) => {return item.VALUE || item.NUM ? item.VALUE || item.NUM : 0;}),},...this.series,// {//   name: "护士",//   type: "line",//   smooth: true, //线变得有弧度//   symbol: "none", //隐藏小圆点//   color: this.table.color[1],//   areaStyle: {//     //折线图下边阴影//     color: {//       type: "linear",//       x: 0,//       y: 0,//       x2: 0,//       y2: 1,//       colorStops: [//         {//           offset: 0,//           color: this.table.color[1] + "4C", // 渐变起始颜色//         },//         {//           offset: 1,//           color: this.table.color[1] + "19", // 渐变结束颜色//         },//       ],//     },//   },//   tooltip: {//     valueFormatter: function (value) {//       return value + "";//     },//   },//   data: [//     2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0,//     2.3,//   ],// },// {//   name: "患者",//   type: "line",//   smooth: true, //线变得有弧度//   symbol: "none", //隐藏小圆点//   color: this.table.color[2],//   areaStyle: {//     //折线图下边阴影//     color: {//       type: "linear",//       x: 0,//       y: 0,//       x2: 0,//       y2: 1,//       colorStops: [//         {//           offset: 0,//           color: this.table.color[2] + "4C", // 渐变起始颜色//         },//         {//           offset: 1,//           color: this.table.color[2] + "19", // 渐变结束颜色//         },//       ],//     },//   },//   tooltip: {//     valueFormatter: function (value) {//       return value + " °C";//     },//   },//   data: [//     2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2,//   ],// },],};let chartDom =this.$refs[this.type == "new_bar" ? "barChart" : "barChart2"];let myChart = this.$E.init(chartDom);myChart.setOption(option);myChart.on("click", function (params) {console.log(params.seriesIndex);if (params.componentType === "series") {var dataIndex = params.dataIndex; // 获取点击的数据索引var data = option.series[params.seriesIndex].data[dataIndex]; // 获取点击的数据对象console.log(data);}});},},
};
</script>
<style scoped lang="scss">
.wrapper {width: 100%;height: 100%;position: relative;#barChart,#barChart2 {width: 100%;height: 100%;}
}
</style>

调用:

<NewBarChart:table="table":style="{ height: heightNew }":type="style[0]"
/>
// heightNew : 动态计算的高度
// new_bar : new_bar / new_barLine
// table:
/*** {"color": ["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc","#8364FF","#36F4D7","#FBB03C"],"datas": [{"COL": "护士","PXXH": 2,"NAME": "47病区(骨科)","VALUE": 24},{"COL": "护士","PXXH": 2,"NAME": "59病区(全科医学科)","VALUE": 11},{"COL": "护士","PXXH": 2,"NAME": "45病区(神外、眼科)","VALUE": 30},{"COL": "护士","PXXH": 2,"NAME": "40病区(泌尿外、肾内科)","VALUE": 26},{"COL": "护士","PXXH": 2,"NAME": "38病区(普外科)","VALUE": 29},{"COL": "护士","PXXH": 2,"NAME": "46病区(心胸外、介入科)","VALUE": 28},{"COL": "护士","PXXH": 2,"NAME": "52病区(康复科)","VALUE": 29},{"COL": "护士","PXXH": 2,"NAME": "31病区(产科)","VALUE": 49},{"COL": "护士","PXXH": 2,"NAME": "37病区(骨科)","VALUE": 24},{"COL": "护士","PXXH": 2,"NAME": "35病区(妇科、眼科)","VALUE": 22},{"COL": "床位","PXXH": 1,"NAME": "47病区(骨科)","VALUE": 42},{"COL": "床位","PXXH": 1,"NAME": "59病区(全科医学科)","VALUE": 26},{"COL": "床位","PXXH": 1,"NAME": "45病区(神外、眼科)","VALUE": 50},{"COL": "床位","PXXH": 1,"NAME": "40病区(泌尿外、肾内科)","VALUE": 50},{"COL": "床位","PXXH": 1,"NAME": "46病区(心胸外、介入科)","VALUE": 50},{"COL": "床位","PXXH": 1,"NAME": "38病区(普外科)","VALUE": 50},{"COL": "床位","PXXH": 1,"NAME": "52病区(康复科)","VALUE": 44},{"COL": "床位","PXXH": 1,"NAME": "31病区(产科)","VALUE": 40},{"COL": "床位","PXXH": 1,"NAME": "37病区(骨科)","VALUE": 42},{"COL": "床位","PXXH": 1,"NAME": "35病区(妇科、眼科)","VALUE": 50},{"COL": "患者","PXXH": 3,"NAME": "47病区(骨科)","VALUE": 72},{"COL": "患者","PXXH": 3,"NAME": "59病区(全科医学科)","VALUE": 28},{"COL": "患者","PXXH": 3,"NAME": "45病区(神外、眼科)","VALUE": 51},{"COL": "患者","PXXH": 3,"NAME": "40病区(泌尿外、肾内科)","VALUE": 120},{"COL": "患者","PXXH": 3,"NAME": "46病区(心胸外、介入科)","VALUE": 69},{"COL": "患者","PXXH": 3,"NAME": "38病区(普外科)","VALUE": 91},{"COL": "患者","PXXH": 3,"NAME": "52病区(康复科)","VALUE": 48},{"COL": "患者","PXXH": 3,"NAME": "31病区(产科)","VALUE": 148},{"COL": "患者","PXXH": 3,"NAME": "37病区(骨科)","VALUE": 73},{"COL": "患者","PXXH": 3,"NAME": "35病区(妇科、眼科)","VALUE": 147}]
}*/

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

临床骨科常用的肩关节疾病量表,医生必备!

根据骨科医生的量表使用情况&#xff0c;常笑医学整理了临床骨科常用的肩关节疾病量表&#xff0c;为大家分享临床常见的肩关节疾病量表评估内容&#xff0c;均支持量表下载和在线使用&#xff0c;建议收藏&#xff01; 1.臂、肩、手功能障碍&#xff08;disabilites of the ar…

java死锁的成因和解决方案

一、什么是死锁&#xff1f; 在Java中&#xff0c;死锁是指两个或多个线程互相持有对方所需要的锁&#xff0c;并且在无法继续执行的情况下永久地等待对方释放锁。这种情况下&#xff0c;所有涉及的线程都无法继续执行&#xff0c;程序被卡住&#xff0c;无法正常终止。 死锁通…

代立冬:基于Apache Doris+SeaTunnel 实现多源实时数据仓库解决方案探索实践

大家好&#xff0c;我是白鲸开源的联合创始人代立冬&#xff0c;同时担任 Apache DolphinScheduler 的 PMC chair 和 SeaTunnel 的 PMC。作为 Apache Foundation 的成员和孵化器导师&#xff0c;我积极参与推动多个开源项目的发展&#xff0c;帮助它们通过孵化器成长为 Apache …

【GEE】时间序列多源遥感数据随机森林回归预测|反演|验证|散点图|完整代码

实验介绍 分类和回归之间的主要区别在于&#xff0c;在分类中&#xff0c;我们的预测目标是离散的类别&#xff0c;而在回归中&#xff0c;预测目标是连续的预测值。 本实验的研究区域位于佛蒙特州的埃塞克斯郡&#xff0c;使用训练数据来模拟土壤氧化还原深度&#xff0c;然…

中缀表达式转后缀表达式与后缀表达式计算(详解)

**中缀表达式转后缀表达式的一般步骤如下&#xff1a; 1&#xff1a;创建一个空的栈和一个空的输出列表。 2&#xff1a;从左到右扫描中缀表达式的每个字符。 3&#xff1a;如果当前字符是操作数&#xff0c;则直接将其加入到输出列表中。 4&#xff1a;如果当前字符是运算符&a…

告别新手!超详细深色UI设计指南

深色用户界面的设计&#xff0c;从手中握持的移动屏幕到宽广的大型屏幕&#xff0c;都已经越来越普遍。深色UI具有何种独特魅力呢&#xff1f;它所带来的不仅仅是力量和奢华的象征&#xff0c;更是精致优雅的体现。然而&#xff0c;将一个设计从浅色主题调整到深色主题&#xf…

docker安装node及使用

文章目录 一、安装node二、创建node容器三、进入创建的容器如有启发&#xff0c;可点赞收藏哟~ 一、安装node 查看可用版本 docker search node安装最新版本 docker install node:latest二、创建node容器 docker run -itd --name node-test node–name node-test&#xff1…

Spark---DataFrame存储、Spark UDF函数、UDAF函数

四、DataFrame存储Spark UDF函数 1、储存DataFrame 1&#xff09;、将DataFrame存储为parquet文件 2&#xff09;、将DataFrame存储到JDBC数据库 3&#xff09;、将DataFrame存储到Hive表 2、UDF&#xff1a;用户自定义函数 可以自定义类实现UDFX接口 java&#xff1a; …

SpringMVC 案例

文章目录 前言1. 计算器1.1 准备前端代码1.2 测试前端代码1.3 完成后端代码1.4 验证程序 2. 留言板2.1 前端代码准备2.2 测试前端代码2.3 完成前后端交互代码2.4 完成后端代码2.5 案例测试2.6 完善前后端交互2.7 完善后端代码2.8 完整功能测试 lombok简单的方式添加Lombok工具3…

RHEL8_Linux访问NFS存储及自动挂载

本章主要介绍NFS客户端的使用 创建FNS服务器并通过NFS共享一个目录在客户端上访问NFS共享的目录自动挂载的配置和使用 1.访问NFS存储 前面介绍了本地存储&#xff0c;本章就来介绍如何使用网络上的存储设备。NFS即网络文件系统&#xff0c;所实现的是 Linux 和 Linux 之间的共…

线程池的使用及实现

使用多进程进行并发编程&#xff0c;会频繁的创建销毁进程&#xff0c;效率比较慢&#xff0c;所以引入了线程&#xff0c;线程使用复用资源的方式提高了创建销毁的效率&#xff0c;但是随着创建线程的频率进一步提高&#xff0c;开销仍然无法忽略不计了。 要想办法优化此处线…

亚信安慧AntDB数据库中级培训ACP上线,中国移动总部首批客户认证通过

近日&#xff0c;亚信安慧AntDB数据库ACP&#xff08;AntDB Certified Professional&#xff09;中级培训课程于官网上线。在中国移动总部客户运维团队、现场项目部伙伴和AntDB数据库成员的协同组织下&#xff0c;首批中级认证学员顺利完成相关课程的培训&#xff0c;并获得Ant…