echarts图表坐标轴数据标签添加下划线(下)

简介: echarts图表坐标轴数据标签添加下划线(下)
使用

看完这个标签的用法,好像是可以满足我们的需求了所以我们来试一下:

const underLine = 'data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAbCAYAAAA+nNxPAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAABPSURBVFhH7dixDQAgCABBoWD/IdhTLRziJX8JgfZbYl9rgHz7e4bQGEJjCI0hNIbQGEJjCI0hNIbQGEIzJiS6e8Q7KO741yLJqnrnvzJzHUQCCDJBedO2AAAAAElFTkSuQmCC';
 yAxis: {
    type: 'category',
    data: ['Brazil', 'Indonesia', 'USA', 'India', 'China', 'World'],
    axisLabel:{
      formatter:(val,ind)=>{
        return val + '\n' + '{hr|}';
      },
      interval:0,
      rich: {
        hr: {
            width: '100%',
            backgroundColor: { image: underLine}//文本块背景图片
        }
      },
    }
},

效果如下图

通过这个方法确实也成功加上图片了,但是这里的图片我们是作为一个另外的元素拼接在标签文字的下一行,因此原本图片的高度也会占位,所以我们可以给背景图片设置一个高度来进行限制。

通过上面这组图片,我们可以发现,背景图片的height属性会影响到像素的展示,这样的设置使得下划线图片的显示并不稳定,所以我们可以换一张图片,直接使用一种全黑的图片来作为下划线图片即可。

转换成base64

使用新图片代替原来的图片:

const underLine = 'data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAbCAYAAAA+nNxPAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAABBSURBVFhH7c/BCQAwDMNAp/vvnPTRIZSiA+O3KknfrXfer2cIjSE0htAYQmMIjSE0htAYQmMIjSE0htAYQvNJSDJsvgE1zcTjegAAAABJRU5ErkJggg==';
 yAxis: {
    type: 'category',
    data: ['Brazil', 'Indonesia', 'USA', 'India', 'China', 'World'],
    axisLabel:{
      formatter:(val,ind)=>{
        return val + '\n' + '{hr|}';
      },
      interval:0,
      rich: {
        hr: {
            width: '100%',
            height: 1,
            backgroundColor: { image: underLine}//文本块背景图片
        }
      },
    }
},

效果如下图:

动态添加下划线
const underLine = 'data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAbCAYAAAA+nNxPAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAABBSURBVFhH7c/BCQAwDMNAp/vvnPTRIZSiA+O3KknfrXfer2cIjSE0htAYQmMIjSE0htAYQmMIjSE0htAYQvNJSDJsvgE1zcTjegAAAABJRU5ErkJggg==';
 yAxis: {
    type: 'category',
    data: ['Brazil', 'Indonesia', 'USA', 'India', 'China', 'World'],
    axisLabel:{
      formatter:(val,ind)=>{
        return val + '\n' + (ind % 2 == 1 ? '{hr|}' : '');
      },
      interval:0,
      rich: {
        hr: {
            width: '100%',
            height: 1,
            backgroundColor: { image: underLine}//文本块背景图片
        }
      },
    }
},

效果如下图:

这时我们发现没设置下划线的标签文字好像会上移一点,这样肯定不行,所以我们给不设置下划线的文字标签也加上背景。

const underLine = 'data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAbCAYAAAA+nNxPAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAABBSURBVFhH7c/BCQAwDMNAp/vvnPTRIZSiA+O3KknfrXfer2cIjSE0htAYQmMIjSE0htAYQmMIjSE0htAYQvNJSDJsvgE1zcTjegAAAABJRU5ErkJggg==';
 yAxis: {
    type: 'category',
    data: ['Brazil', 'Indonesia', 'USA', 'India', 'China','Japan', 'World'],
    axisLabel:{
      formatter:(val,ind)=>{
          //这里的(6 + ind)中的6为data的长度减1,因为n - 1 + n - 1 = (2 - 1) * n,这样最上面的一项永远是偶数开始
        return val + '\n' + ((6 + ind) % 2 == 1 ? '{hr|}' : '{none|}');
      },
      interval:0,
      rich: {
        hr: {
            width: '100%',
            height: 1,
            backgroundColor: { image: underLine}//文本块背景图片
        },
        none: {
            width: '100%',
            height: 1,
            backgroundColor: { image: 'none'}//文本块背景图片
        }
      },
    }

效果如下图:

从上图来看,效果是很完美的,所以给项目经理看了效果图,结果项目经理说我不会数数,不是说了是从上往下数,奇数的加上下划线,偶数的不加吗?,然后我说是呀,然后battle了一番发现原来是我们的数数方法不一样。

然后我又小小地修改了一下,准时下班😎

完整代码

const underLine = 'data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAbCAYAAAA+nNxPAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAABBSURBVFhH7c/BCQAwDMNAp/vvnPTRIZSiA+O3KknfrXfer2cIjSE0htAYQmMIjSE0htAYQmMIjSE0htAYQvNJSDJsvgE1zcTjegAAAABJRU5ErkJggg==';
option = {
  title: {
    text: 'World Population'
  },
  tooltip: {
    trigger: 'axis',
    axisPointer: {
      type: 'shadow'
    }
  },
  legend: {},
  grid: {
    left: '3%',
    right: '4%',
    bottom: '3%',
    containLabel: true
  },
  xAxis: {
    type: 'value',
    boundaryGap: [0, 0.01]
  },
  yAxis: {
    type: 'category',
    data: ['Brazil', 'Indonesia', 'USA', 'India', 'China','Japan', 'World'],
    axisLabel:{
      formatter:(val,ind)=>{
        //这里的(7 + ind)中的7为data的长度,因为n + n - 1 = 2 * n - 1,这样最上面的一项永远是奇数开始
        return val + '\n' + ((7 + ind) % 2 == 1 ? '{hr|}' : '{none|}');
      },
      interval:0,
      rich: {
        hr: {
            width: '100%',
            height: 1,
            backgroundColor: { image: underLine}//文本块背景图片
        },
        none: {
            width: '100%',
            height: 1,
            backgroundColor: { image: 'none'}//文本块背景图片
        }
      },
    }
  },
  series: [
    {
      name: '2011',
      type: 'bar',
      data: [18203, 23489, 29034, 104970, 131744,111111, 741341]
    },
    {
      name: '2012',
      type: 'bar',
      data: [19325, 23438, 31000, 121594, 134141, 111111,792918]
    }
  ]
};

往期精彩

面试官:不使用canvas怎么实现一个刮刮卡效果?

vue封装一个3D轮播图组件

vue实现一个鼠标滑动预览视频封面组件(精灵图版本)

node封装一个图片拼接插件

基于inquirer封装一个控制台文件选择器

node封装一个控制台进度条插件

密码太多不知道怎么记录?不如自己写个密码箱小程序

微信小程序实现一个手势图案锁组件

vue封装一个弹幕组件

为了学(mo)习(yu),我竟开发了这样一个插件

程序员的浪漫之——情侣日常小程序

vue简单实现词云图组件

说在后面

🎉这里是JYeontu,喜欢算法,GDCPC打过卡;热爱羽毛球,大运会打过酱油。毕业一年,两年前端开发经验,目前担任H5前端开发,算法业余爱好者,有空会刷刷算法题,平时喜欢打打羽毛球🏸 ,也喜欢写些东西,既为自己记录📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解🙇,写错的地方望指出,定会认真改进😊,在此谢谢大家的支持,我们下文再见🙌。

目录
相关文章
|
2天前
|
数据可视化 JavaScript 前端开发
Echarts是一个开源的JavaScript可视化库,用于创建各种类型的图表
Echarts是JavaScript的开源可视化库,Python通过Pyecharts库可调用它来绘制图表。示例展示了如何用Pyecharts创建柱状图:定义图表对象,设置标题和坐标轴,添加X轴、Y轴数据,最后渲染展示。Pyecharts还支持折线图、散点图、饼图等多种图表类型,更多详情可查阅官方文档。
10 0
|
4天前
|
新零售 分布式计算 数据可视化
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
15 0
|
4天前
|
前端开发 JavaScript 定位技术
Docusaurus框架——react+antd+echarts自定义mdx生成图表代码解释文档
Docusaurus框架——react+antd+echarts自定义mdx生成图表代码解释文档
21 0
|
5天前
|
存储
vue2、vue3分别配置echarts多图表的同步缩放(二)
vue2、vue3分别配置echarts多图表的同步缩放
9 0
|
5天前
|
API
vue2、vue3分别配置echarts多图表的同步缩放(一)
vue2、vue3分别配置echarts多图表的同步缩放
10 0
|
12天前
|
容器
echarts图表怎样实现刷新功能?
echarts图表怎样实现刷新功能?
|
3月前
|
数据可视化
echarts图表坐标轴数据标签添加下划线
echarts图表坐标轴数据标签添加下划线
55 0
|
3月前
|
前端开发 JavaScript BI
Django教程第5章 | Web开发实战-数据统计图表(echarts、highchart)
使用echarts和highcharts图表库实现折线图、柱状图、饼图和数据集图
64 2
|
14天前
|
JavaScript
如何在vue添加echarts图表
如何在vue添加echarts图表
9 0