添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
博客介绍了如何在Echarts中实现x轴标签根据宽度自适应换行,通过设置axisLabel的width、overflow属性以及利用echarts的getWidth方法动态计算宽度。关键配置包括interval设为0以显示所有类目,overflow设为'breakAll'实现英文字符串换行,同时提供计算width的示例代码。 摘要由CSDN通过智能技术生成

echarts图表的x轴文字自适应换行的问题

最近开发中使用到echarts,客户提到x轴的label自适应宽度及换行的需求,网上找了很久都没遇到合适的办法,最后终于实现了,先看效果图
稍宽一点
宽屏
稍窄一点:
在这里插入图片描述
echarts的option中并没有直接提供自适应换行的属性,但是,还是可以曲线救国的,总结下来还是通过设置宽度及换行(width+overflow),具体如下(有echarts使用经验观看更佳哦):

xAxis: {
    type: 'category',
    data: [
      '设菲菲我非废物费滴弱理1',
      '節能管控2',
      '節能管控3',
      '设备管理4',
      '節能管控5',
      '设备管理6',
      '節能管控7'
    axisLabel: {//**该项配置重点关注**
      show:true,
      interval:0,
      width:500,
      overflow:"breakAll"

重点使用到的是axisLabel,其他配置项忽略,其中:

interval: 0,是为了保证每个类目都能展示,默认值为auto,此时如果有超长类目,会隐藏该类目掉相邻的类目,保证有一条可以完整显示,不设为0的话即使超长类目名折行显示了,它相邻的类目还是无法展示

overflow:“breakAll”,作用同word-break,值为break是普通的换行,值为breakAll会拆开连续的英语字符串并折行。

最最重要也是唯一需要计算的就是width,width的作用就是在文字长度超过多少px的时候执行换行。echarts的实例上有个getWidth方法,可以直接获取到当前图表的宽度,只需取到图表的宽度然后除以你类目的总长度即可计算出width,当然若图表grid设置了左右间隙则需减去相应的值,例如

grid: {
          top: 50 + 28,
          right: 30,
          left: 40,
          bottom: 50,

在计算width时,以上例,类目总长度为3,则:

let xLabelWidth = (chart.getWidth()*1 - 30 - 40) / 3
option.xAxis.axisLabel.width = xLabelWidth
chart.setOption(option);

至此就可实现类目文字长度自适应及换行,同时多减几个px可以让类目名之间也有一点点的间隙,看着更清楚,文字是默认居中的,所以也不用担心左右分布不均的情况,如果有更好的方法,欢迎留言一起讨论。

最近开发中使用到echarts,客户提到x轴的label自适应宽度及换行的需求,网上找了很久都没遇到合适的办法,最后终于实现了,先看效果图稍宽一点:稍窄一点:echarts的option中并没有直接提供自适应换行的属性,但是,还是可以曲线救国的,总结下来还是通过设置宽度及换行(width+overflow),具体如下(有echarts使用经验观看更佳哦):重点使用到的是axisLabel,其他配置项忽略,其中:interval: 0,是为了保证每个类目都能展示,默认值为auto,此时如果有超长类 var maxLength = 4; var valLength = value.length; var rowN = Math.ceil(valLength / maxLength); 第一,部门数量多,一些地方通过xAxis-axisLabel,可以实现超多部门的斜列显示,但是有些时候设置旋转角度不完全管用,比如下面说到了还有就是部门太密集重叠; "xAxis": [{ "type": "category", "axisLabel": { "interval": 0,
在做Echarts图表的时候 通常会遇到一个名字较长的分类或者字段名称 通常我们可以倾斜他 让他全部显示 但是这样的话X下方就会拉得比较长 在项目中需求通常也是会要求换行Echarts本身没有提供换行这个功能的 所以只有自己想办法;我这里是利用循环对字符串进行截取拼接的方式来解决的; 下面给一个示例,都有注释很好理解: xAxis: [ type: 'category', data: [], axisLine:{ x: 'right', bottom: '30', data: ['行业大类1', '行业大类2', '行业大类3', '\n','邮件营销', '联盟广告', '视频广告', '\n','百度', '谷歌', '必应'], 此种方法比较简单,在data中添加’\n’,可实现换行,但不会对齐,效果如下: legend: [ x: 'left',
熟悉echarts的同学应该知道,echarts中的直角系图表当坐标为类目型(常为x)而且数据又特别多时,默认会隐藏掉一部分x文字。效果就类似于这样: 然而,echarts自带的计算有时候是过于苛刻的,即使文字实际上不存在遮挡问题,当文字文字间的间隔小于一定值时同样会触发隐藏机制,例如上面那张图,如果设置{xAxis:{axisLabel:{interval:0}}}显示出所有...