本文主要实现echarts双Y轴,并在此过程中解决:

  • 实现echarts双Y轴
  • echarts双Y轴左右刻度线一致
  • 图例分布显示
  • 坐标轴刻度标签数值取整
  • X/Y轴名称的分布
  • 坐标轴刻度标签数值以某一值为分界点改变颜色

等问题

下方有源码!注意查收!

1、 实现echarts双Y轴

  1. 就一个Y轴时yAxis为对象
yAxis: {type: 'value',name:'Y轴名称'},
  1. 两个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轴(简单明了)相关推荐

  1. 总结整理Echarts双y轴曲线图(全)

    最近因为项目需要,用到了Echarts,自己学习了相关东西,也参考了一些文件,最终把双y轴曲线图实现了,跟大家分享一下.下面是最终需要的效果图: 不多说了,直接上代码!O(∩_∩)O哈哈~ ----- ...

  2. 实现ECharts双Y轴左右刻度线一致

    实现ECharts双Y轴左右刻度线一致 原文链接:https://blog.csdn.net/qq_40845885/article/details/82108525 博主亲测可用哦,先上图: 这是未 ...

  3. echarts双y轴实现(解决刻度线不对齐)

    echarts双y轴实现(解决刻度线不对齐) 解决办法:让两个坐标轴共用一个最大值,可以刻度保持一致. (即:拿到两数中最大的值作为共同的最大值). (第一次的方法) var maxa = Math. ...

  4. ECharts双y轴设置0刻度对齐,左右刻度根据数据变化?

    一.ECharts双y轴设置0刻度对齐,左右刻度值根据数据变化? 双y轴因为左右的数值有正数有负数的原因,出现0刻度不在一条线上的情况,解决办法如下. 代码如下: //获取数据中的最大值 functi ...

  5. Echarts双Y轴刻度分割线对不齐问题

    # Echarts双Y轴刻度分割线对不齐问题 >  [已发布Echarts社区点击查看](https://www.makeapie.com/editor.html?c=xdDYQAJSZA) # ...

  6. 【echarts双y轴:左右轴数据分开设置最大值(解决刻度线不对齐】

    echarts双y轴数值差距太大(解决刻度线不对齐) 关键代码: min: 0,//最小值 max: set_max(maxb),//最大值 interval: set_max(maxb) / 5, ...

  7. Echarts双Y轴,右侧Y轴标签不显示

    先说一下如何实现双y轴,echarts中有个控制y轴的属性叫yAxis,这个属性可以是对象也可以是数组.当我们只设置一个Y轴时,它为对象:当我们要设置多个Y轴时,它是个数组.所以我们要设置双y轴,它就 ...

  8. Echarts双Y轴图表处理

    前言 近期开发遇到双Y轴的折线图需求,遇到了一些问题,在这里记录分享(附完整option代码,基于vue-echarts) 1.双Y轴自定义Y轴显示样式(加 '%'和正常显示) 2.双Y轴鼠标划入自定 ...

  9. Echarts双Y轴柱状图

    var option = {title: {text: '一周推送及完成率',x:'center',y:'top',align:'center',textStyle:{color:'#666666', ...

最新文章

  1. 如何关闭事件跟踪程序
  2. Microbiome:掠食性粘细菌通过调节土壤微生物群落来控制黄瓜枯萎病
  3. MYSQL和ORACLE时区设置比较
  4. Visual Studio IDE环境下利用模板创建和手动配置CUDA项目教程
  5. 高性能MySQL——查询性能优化
  6. python3语音识别模块_『开源项目』基于STM32的智能垃圾桶之语音识别
  7. linux下配置钉钉内网穿透_4G工业路由器内嵌花生壳PHTunnel,为工业物联网提供智能内网穿透...
  8. AndroidStudio断点调试
  9. 现代软件工程团队项目贝塔阶段_大规模测试结果_2018.02.08
  10. SpringBoot 系列
  11. android 应用程序Activity之间数据传递与共享的几种途径
  12. Linux 环境下 vi/vim 编辑器常用命令
  13. java报错stderr_struts2 文件上传路径错误 ERROR [STDERR] java.io.FileNotFoundException:
  14. java反编译luyten使用
  15. 信息化项目软件运维费用都有哪些构成?
  16. netty报错LEAK: ByteBuf.release() was not called before it‘s garbage-collected.的解决方法
  17. c语言名人名言大全摘抄,语文摘抄名人名言
  18. Android 设置应用启动动画
  19. react 中文文档重新翻看
  20. word- 图片显示不全/错位

热门文章

  1. HUDJ 2011 多项式求和
  2. PTA| 输出大写英文字母 (15 分)
  3. 网络营销广告投放策略
  4. 如何手机扫描身份证 8.56cm 5.4cm
  5. 在Windows实现类似MacOS的时间壁纸,编写脚本自定义自己喜欢的壁纸
  6. LimeSDR实验教程(15) Lattepanda + LimeSDR Mini转接板
  7. 通过中值滤波,归一化对比LAMOST与SDSS的光谱
  8. 如何选购计算机主板电池,电脑主板电池耗电太快什么原因?如何判断问题并解决?...
  9. Android消息提示框及CheckBox组件
  10. 现有2个空水壶,容积分别为5升和6升,问题是如何只用这2个水壶从池塘里取得3升的水?