当前位置:首页 » 《我的小黑屋》 » 正文

ECharts - 坐标轴刻度数值处理

26 人参与  2024年10月02日 18:01  分类 : 《我的小黑屋》  评论

点击全文阅读


写图表时,Y轴的数值过大,不太可能直接展示,这时候就得简写了,或者百分比展示的也要处理,如下图:

 yAxis: {   type: 'value',   // Y轴轴线   axisLine: { show: false },    // 刻度线   axisTick: { show: false },   // 轴刻度值   axisLabel: {     interval: 0, //坐标轴值与坐标轴间距     rotate: 0, //旋转角度         // 值格式化 (toBMK函数 处理 Y轴数字值)     formatter(val) {       return `${toBMK(val)}${option.series[0].data[0].indexOf('%') > -1 ? '%' : ''}`;     },   }, }

红框圈起来的数值表示如下:

1K1000
1M1000,000
1B

1000,000,000

1KB1000,000,000,000

toBMK函数:

export function toBMK(value) {  const vblValue = Math.abs(value);  const newValue = ['', '', ''];  let fr = 1000;  let num = 3;  while (vblValue / fr >= 1) {    fr *= 10;    num += 1;  }  if (num <= 4) {    newValue[1] = 'K';    newValue[0] = vblValue / 1000 >= 10     ? `${parseInt(vblValue / 1000, 10)}`     : (vblValue / 1000).toFixed(1);  } else if (num <= 7) {    const text1 = parseInt(num - 3, 10) / 3 > 1 ? 'M' : 'K';    const fm = text1 === 'K' ? 1000 : 1000000;    newValue[1] = text1;    newValue[0] = `${vblValue / fm}`;  } else {    let text1 = (num - 6) / 3 > 1 ? 'B' : 'M';    text1 = (num - 9) / 3 > 1 ? 'KB' : text1;    let fm = 1;    if (text1 === 'M') {      fm = 1000000;    } else if (text1 === 'B') {      fm = 1000000000;    } else if (text1 === 'KB') {      fm = 1000000000000;    }    newValue[1] = text1;    newValue[0] = `${parseInt(vblValue / fm, 10)}`;  }  if (vblValue < 1000) {    newValue[1] = '';    newValue[0] = `${vblValue}`;  }  return `${value < 0 ? '-' : ''}${newValue.join('')}`;}

Y轴yAxis的属性,数值格式化,对应的大数值就会转换为简写,图表看起来美观,简明一些。


点击全文阅读


本文链接:http://zhangshiyu.com/post/167260.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1