echart x轴文字过长换行全部显示

 使用echart图表开发过程中,经常遇到类目轴(一般x轴)数据名称过长导致图例展示效果很差,写了一个方法当x轴名称较长时换行显示。效果如下图所示:

 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
 
  <body>
    <div class="main" style="width: 100%; height: 100%;">
      <div id="myChart" style="height: 600px;"></div>
    </div>
  </body>
  <script src="https://libs.cdnjs.net/jquery/3.5.1/jquery.js"></script>
  <script src="https://libs.cdnjs.net/echarts/4.8.0/echarts-en.common.js"></script>
  <script>
    var myChart = echarts.init(document.getElementById("myChart"));
    option = {
      xAxis: {
        triggerEvent: true, // 开启坐标轴的标签响应和触发鼠标事件
        type: "category",
        axisLabel: {
          // 坐标轴刻度标签换行处理
          formatter: function (params) {
            var newParamsName = ""; // 最终拼接成的字符串
            var paramsNameNumber = params.length; // 实际标签的个数
            var provideNumber = 7; // 每行能显示的字的个数
            var rowNumber = Math.ceil(paramsNameNumber / provideNumber); // 换行的话,需要显示几行,向上取整
            /**
             * 判断标签的个数是否大于规定的个数, 如果大于,则进行换行处理 如果不大于,即等于或小于,就返回原标签
             */
            // 条件等同于rowNumber>1
            if (paramsNameNumber > provideNumber) {
              /** 循环每一行,p表示行 */
              for (var p = 0; p < rowNumber; p++) {
                var tempStr = ""; // 表示每一次截取的字符串
                var start = p * provideNumber; // 开始截取的位置
                var end = start + provideNumber; // 结束截取的位置
                // 此处特殊处理最后一行的索引值
                if (p == rowNumber - 1) {
                  // 最后一次不换行
                  tempStr = params.substring(start, paramsNameNumber);
                } else {
                  // 每一次拼接字符串并换行
                  tempStr = params.substring(start, end) + "\n";
                }
                newParamsName += tempStr; // 最终拼成的字符串
              }
            } else {
              // 将旧标签的值赋给新标签
              newParamsName = params;
            }
            //将最终的字符串返回
            return newParamsName;
          },
        },
 
        data: [
          "我是一个名字很长的类目1",
          "我是一个名字很长的类目2",
          "我是一个名字很长的类目3",
          "我是一个名字很长的类目4",
          "我是一个名字很长的类目5",
          "我是一个名字很长的类目6",
          "我是一个名字很长的类目7",
        ],
      },
 
      yAxis: {
        type: "value",
      },
      series: [
        {
          data: [120, 200, 150, 80, 70, 110, 130],
          type: "bar",
          showBackground: true,
          backgroundStyle: {
            color: "rgba(220, 220, 220, 0.8)",
          },
        },
      ],
    };
    myChart.setOption(option);
  </script>
</html>

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值