echarts双Y轴(简单明了)
本文主要实现echarts双Y轴,并在此过程中解决:
- 实现echarts双Y轴
- echarts双Y轴左右刻度线一致
- 图例分布显示
- 坐标轴刻度标签数值取整
- X/Y轴名称的分布
- 坐标轴刻度标签数值以某一值为分界点改变颜色
等问题
下方有源码!注意查收!
1、 实现echarts双Y轴
- 就一个Y轴时yAxis为对象
yAxis: {type: 'value',name:'Y轴名称'},
- 两个Y轴时yAxis为数组
yAxis : [{type: 'value',name:'左侧Y轴名称',min: 0,max: 5,interval: 1,splitNumber: 6, //设置坐标轴的分割段数
},
{type: 'value',name:'右侧Y轴名称',min: 0,max: 125,interval: 25,splitNumber: 6, //设置坐标轴的分割段数
}],
2、 echarts双Y轴左右刻度线一致
参考文档:
https://blog.csdn.net/qq_40845885/article/details/82108525
https://blog.csdn.net/LzzMandy/article/details/79400141?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7
2.1 获取数据最大值与最小值
// 获取最大值方法
function calMax(arr) {var max = Math.max.apply(null, arr); // 获取最大值方法var maxint = Math.ceil(max / 5); // 向上以5的倍数取整var maxval = maxint * 5 + 5; // 最终设置的最大值return maxval; // 输出最大值
}
// 获取最小值方法
function calMin(arr) {var min = Math.min.apply(null, arr); // 获取最小值方法var minint = Math.floor(min / 1); // 向下以1的倍数取整var minval = minint * 1 - 5; // 最终设置的最小值return minval; // 输出最小值
}
// 调用方法获取数据最大值&最小值
......
2.2 确定两侧坐标轴的分割段数
splitNumber: 6,
2.3 通过坐标轴的分割段数 splitNumber 计算坐标轴分割间隔 interval
interval: (maxData1 - minData1) / 6,
2.4 设置yAxisIndex
yAxisIndex: 1, //在单个图表实例中存在多个y轴的时候有用
3、图例分布显示
利用 legend
组件的top、bottom、left、right
属性去配置
legend: [{top: "30%",right: "0%",data: [ {name: "数据1" } ]},{bottom: "20%",left: "0%",data: [ {name: "数据2"} ]}
],
4、坐标轴刻度标签数值取整
利用toFixed()方法,该方法可把 Number 四舍五入为指定小数位数的数字。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20。
axisLabel: {formatter: function(v) {return v.toFixed(2); //0表示小数为0位,1表示1位小数,2表示2位小数}}
5、X/Y轴名称的分布
根据文档X/Y轴名称显示位置 nameLocation
的值只能是:'start'、'middle'
或者'center'、'end'
,没办法指定到某一位置,所以本人想到的方法就是利用nameLocation.padding
。
nameTextStyle: {padding: [上, 右, 下, 左]// 或 padding: [上下,左右]
}
6、坐标轴刻度标签数值以某一值为分界点改变颜色
利用 axisLabel.color
属性
axisLabel: {color: function(value, index) {turn value >= 1000 ? "red" : "green";}
}
value >= 1000 ? "red" : "green";
为三目运算符,意思是:如果数值大于等于 1000 那么数值颜色为红色,否则为绿色。如果将不想显示的数值改成同背景色一样的颜色,就可以实现隐藏(或空缺)的效果!!!
7、案例源码
<template><div class="home"><div id="wire"></div></div>
</template><script>
export default {name: "Home",data() {return {data1: [820, 932, 901, 934, 1290, 1330, 1320, 1330, 1340],data2: [134, 133, 132, 133, 129, 93, 90, 93, 82]};},mounted() {this.myChart = this.$echarts.init(document.getElementById("wire"));this.initData();},methods: {initData() {// 获取最大值方法function calMax(arr) {var max = Math.max.apply(null, arr); // 获取最大值方法var maxint = Math.ceil(max / 5); // 向上以5的倍数取整var maxval = maxint * 5 + 5; // 最终设置的最大值return maxval; // 输出最大值}// 获取最小值方法function calMin(arr) {var min = Math.min.apply(null, arr); // 获取最小值方法var minint = Math.floor(min / 1); // 向下以1的倍数取整var minval = minint * 1 - 5; // 最终设置的最小值return minval; // 输出最小值}// 调用方法,获取数据的最大值&最小值var maxData1 = calMax(this.data1);var maxData2 = calMax(this.data2);var minData1 = calMin(this.data1);var minData2 = calMin(this.data2);const option = {// 图例组件legend: [{top: "30%",right: "0%",textStyle: {fontSize: 12, //字体大小color: "#" //字体颜色(图例与图例文字配色保持一致)},data: [{name: "数据1"}]},{bottom: "20%",left: "0%",textStyle: {fontSize: 12, //字体大小color: "#" //字体颜色},data: [{name: "数据2"}]}],// 直角坐标系内绘图网格grid: {show: true,x: 120,y: 50,x2: 120,y2: 50},xAxis: {name: "X轴数据",type: "category",data: ["10", "20", "30", "40", "50", "60", "70", "80", "90"],nameTextStyle: {padding: [0, 0, 50, 50]}},yAxis: [{type: "value",name: "左侧",nameTextStyle: {padding: [0, 0, -55, -150]},min: minData1,max: maxData1,splitNumber: 6, //设置坐标轴的分割段数interval: (maxData1 - minData1) / 6, // 标轴分割间隔axisLabel: {formatter: function(v) {return v.toFixed(1); //0表示小数为0位,1表示1位小数,2表示2位小数},color: function(value, index) {return value >= 1000 ? "red" : "green";}}},{type: "value",name: "右侧",nameTextStyle: {padding: [0, 50, -50, 200]},min: minData2,max: maxData2,splitNumber: 6,interval: (maxData2 - minData2) / 6,axisLabel: {formatter: function(v) {return v.toFixed(2); //0表示小数为0位,1表示1位小数,2表示2位小数}}}],series: [{name: "数据1",type: "line",color: ["#eb9f0d"],symbol: "none",smooth: true,data: this.data1},{name: "数据2",type: "line",color: ["#969ac7"],symbol: "none",smooth: true,yAxisIndex: 1, //在单个图表实例中存在多个y轴的时候有用data: this.data2}]};this.myChart.setOption(option);// 自适应布局let _this = this;window.addEventListener("resize", function(event) {_this.myChart.resize();});}}
};
</script><style lang="scss" scoped>
.home {width: 100%;height: 100%;display: flex;justify-content: center;#wire {width: 800px;height: 500px;border: 1px solid;}
}
</style>
echarts双Y轴(简单明了)相关推荐
- 总结整理Echarts双y轴曲线图(全)
最近因为项目需要,用到了Echarts,自己学习了相关东西,也参考了一些文件,最终把双y轴曲线图实现了,跟大家分享一下.下面是最终需要的效果图: 不多说了,直接上代码!O(∩_∩)O哈哈~ ----- ...
- 实现ECharts双Y轴左右刻度线一致
实现ECharts双Y轴左右刻度线一致 原文链接:https://blog.csdn.net/qq_40845885/article/details/82108525 博主亲测可用哦,先上图: 这是未 ...
- echarts双y轴实现(解决刻度线不对齐)
echarts双y轴实现(解决刻度线不对齐) 解决办法:让两个坐标轴共用一个最大值,可以刻度保持一致. (即:拿到两数中最大的值作为共同的最大值). (第一次的方法) var maxa = Math. ...
- ECharts双y轴设置0刻度对齐,左右刻度根据数据变化?
一.ECharts双y轴设置0刻度对齐,左右刻度值根据数据变化? 双y轴因为左右的数值有正数有负数的原因,出现0刻度不在一条线上的情况,解决办法如下. 代码如下: //获取数据中的最大值 functi ...
- Echarts双Y轴刻度分割线对不齐问题
# Echarts双Y轴刻度分割线对不齐问题 > [已发布Echarts社区点击查看](https://www.makeapie.com/editor.html?c=xdDYQAJSZA) # ...
- 【echarts双y轴:左右轴数据分开设置最大值(解决刻度线不对齐】
echarts双y轴数值差距太大(解决刻度线不对齐) 关键代码: min: 0,//最小值 max: set_max(maxb),//最大值 interval: set_max(maxb) / 5, ...
- Echarts双Y轴,右侧Y轴标签不显示
先说一下如何实现双y轴,echarts中有个控制y轴的属性叫yAxis,这个属性可以是对象也可以是数组.当我们只设置一个Y轴时,它为对象:当我们要设置多个Y轴时,它是个数组.所以我们要设置双y轴,它就 ...
- Echarts双Y轴图表处理
前言 近期开发遇到双Y轴的折线图需求,遇到了一些问题,在这里记录分享(附完整option代码,基于vue-echarts) 1.双Y轴自定义Y轴显示样式(加 '%'和正常显示) 2.双Y轴鼠标划入自定 ...
- Echarts双Y轴柱状图
var option = {title: {text: '一周推送及完成率',x:'center',y:'top',align:'center',textStyle:{color:'#666666', ...
最新文章
- 如何关闭事件跟踪程序
- Microbiome:掠食性粘细菌通过调节土壤微生物群落来控制黄瓜枯萎病
- MYSQL和ORACLE时区设置比较
- Visual Studio IDE环境下利用模板创建和手动配置CUDA项目教程
- 高性能MySQL——查询性能优化
- python3语音识别模块_『开源项目』基于STM32的智能垃圾桶之语音识别
- linux下配置钉钉内网穿透_4G工业路由器内嵌花生壳PHTunnel,为工业物联网提供智能内网穿透...
- AndroidStudio断点调试
- 现代软件工程团队项目贝塔阶段_大规模测试结果_2018.02.08
- SpringBoot 系列
- android 应用程序Activity之间数据传递与共享的几种途径
- Linux 环境下 vi/vim 编辑器常用命令
- java报错stderr_struts2 文件上传路径错误 ERROR [STDERR] java.io.FileNotFoundException:
- java反编译luyten使用
- 信息化项目软件运维费用都有哪些构成?
- netty报错LEAK: ByteBuf.release() was not called before it‘s garbage-collected.的解决方法
- c语言名人名言大全摘抄,语文摘抄名人名言
- Android 设置应用启动动画
- react 中文文档重新翻看
- word- 图片显示不全/错位
热门文章
- HUDJ 2011 多项式求和
- PTA| 输出大写英文字母 (15 分)
- 网络营销广告投放策略
- 如何手机扫描身份证 8.56cm 5.4cm
- 在Windows实现类似MacOS的时间壁纸,编写脚本自定义自己喜欢的壁纸
- LimeSDR实验教程(15) Lattepanda + LimeSDR Mini转接板
- 通过中值滤波,归一化对比LAMOST与SDSS的光谱
- 如何选购计算机主板电池,电脑主板电池耗电太快什么原因?如何判断问题并解决?...
- Android消息提示框及CheckBox组件
- 现有2个空水壶,容积分别为5升和6升,问题是如何只用这2个水壶从池塘里取得3升的水?