echarts x轴文字显示不全(xAxis文字倾斜比较全面的3种做法值得推荐)

来源:互联网 发布:共青团网络志愿者 编辑:程序博客网 时间:2024/06/06 00:20

echarts x轴标签文字过多导致显示不全

如图:

解决办法1:xAxis.axisLabel 属性

axisLabel的类型是object ,主要作用是:坐标轴刻度标签的相关设置。(当然yAxis也是一样有这个属性的)
[html] view plain copy
print?
  1. axisLabel: {  
  2.    interval:0,  
  3.    rotate:40  
  4. }  
                                        axisLabel: {                                           interval:0,                                           rotate:40                                        }
以上就可解决x轴文字显示不全并将文字倾斜。如图:

稍微解释一下
interval
坐标轴刻度标签的显示间隔(在类目轴中有效哦),默认会采用标签不重叠的方式显示标签(也就是默认会将部分文字显示不全)
可以设置为0强制显示所有标签,如果设置为1,表示隔一个标签显示一个标签,如果为3,表示隔3个标签显示一个标签,以此类推
rotate
标签倾斜的角度,在类目轴的类目标签显示不全时可以通过旋转防止标签重叠(官方这样说的)旋转的角度是-90到90度
问题又来了,这个名称x轴的文字如果太长会受到遮挡,还是显示不全,这个时候可以用grid属性解决
[html] view plain copy
print?
  1. grid: {  
  2. left: ‘10%’,  
  3. bottom:’35%’  
  4. },  
grid: {left: '10%',bottom:'35%'},
如图:

解决办法2:调用formatter文字竖直显示

一般很多人都习惯办法1的方式虽然不是很完美,但是在一定程度上还是解决了一些问题。在文字不是非常多的情况下还是可以的,感觉还没第一种方法好
axisLabel中使用formatter回调,formatter有两个参数,使用方法是这样的formatter:function(value,index){} ,value是类目(测试医院A,人民医院),index 是类目索引。
[html] view plain copy
print?
  1. axisLabel: {  
  2.                                interval: 0,  
  3.                                formatter:function(value)  
  4.                                {  
  5.                                    return value.split(“”).join(“\n”);  
  6.                                }  
  7.                            }  
             axisLabel: {                                            interval: 0,                                            formatter:function(value)                                            {                                                return value.split("").join("\n");                                            }                                        }
如图:

文字竖直这个formatter实在有点太简单化了,所以我们来做一个两个字的加\n的换行。formatter如下:
[html] view plain copy
print?
  1. axisLabel: {  
  2.                                      interval: 0,  
  3.                                      formatter:function(value)  
  4.                                      {  
  5.                                          debugger  
  6.                                          var ret = “”;//拼接加\n返回的类目项  
  7.                                          var maxLength = 2;//每项显示文字个数  
  8.                                          var valLength = value.length;//X轴类目项的文字个数  
  9.                                          var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数  
  10.                                          if (rowN > 1)//如果类目项的文字大于3,  
  11.                                          {  
  12.                                              for (var i = 0; i < rowN; i++) {  
  13.                                                  var temp = “”;//每次截取的字符串  
  14.                                                  var start = i * maxLength;//开始截取的位置  
  15.                                                  var end = start + maxLength;//结束截取的位置  
  16.                                                  //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧  
  17.                                                  temp = value.substring(start, end) + ”\n”;  
  18.                                                  ret += temp; //凭借最终的字符串  
  19.                                              }  
  20.                                              return ret;  
  21.                                          }  
  22.                                          else {  
  23.                                              return value;  
  24.                                          }  
  25.                                      }  
  26.                                  }  
       axisLabel: {                                            interval: 0,                                            formatter:function(value)                                            {                                                debugger                                                var ret = "";//拼接加\n返回的类目项                                                var maxLength = 2;//每项显示文字个数                                                var valLength = value.length;//X轴类目项的文字个数                                                var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数                                                if (rowN > 1)//如果类目项的文字大于3,                                                {                                                    for (var i = 0; i < rowN; i++) {                                                        var temp = "";//每次截取的字符串                                                        var start = i * maxLength;//开始截取的位置                                                        var end = start + maxLength;//结束截取的位置                                                        //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧                                                        temp = value.substring(start, end) + "\n";                                                        ret += temp; //凭借最终的字符串                                                    }                                                    return ret;                                                }                                                else {                                                    return value;                                                }                                            }                                        }
效果如图

解决办法3:X轴类目项隔一个换行(使用formatter中index参数)

都是上面的第二种方法是利用formatter中的value参数实现了文字拼接\n换行的,但是index参数并没有使用,现在我们就一起来使用这两个参数实现隔一个类目项换行。
效果如图:

代码比较简单:
[html] view plain copy
print?
  1. axisLabel: {  
  2.                                 interval: 0,  
  3.                                 formatter:function(value,index)  
  4.                                 {  
  5.                                     debugger  
  6.                                     if (index % 2 != 0) {  
  7.                                         return ’\n\n’ + value;  
  8.                                     }  
  9.                                     else {  
  10.                                         return value;  
  11.                                     }  
  12.                                 }  
  13.                             }  
            axisLabel: {                                            interval: 0,                                            formatter:function(value,index)                                            {                                                debugger                                                if (index % 2 != 0) {                                                    return '\n\n' + value;                                                }                                                else {                                                    return value;                                                }                                            }                                        }
这种做法是我比较推荐的一种。以上几种方法基本上能解决问题,但是都不是很完美。

原文:http://blog.csdn.net/kebi007/article/details/68488694


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 猫脸上有猫藓怎么办 小猫脸上脏怎么办 小猫鼻子干怎么办 猫剃毛不配合怎么办 猫咪剃毛不配合怎么办 猫剃毛抑郁了怎么办 夏天猫热怎么办 身上长猫藓了怎么办 夏天猫掉毛严重怎么办 英短猫掉毛严重怎么办 猫咪剃毛后打架怎么办 小猫吐毛球怎么办 泰迪忧郁症怎么办 泰迪狗剃毛后皮肤起痘痘怎么办 狗狗剃毛后感冒怎么办 萨摩耶毛剃光了怎么办 萨摩耶毛不长毛怎么办 小狗不能行走怎么办 萨摩耶毛变黄了怎么办 萨摩耶毛色发黄怎么办 萨摩耶感冒咳嗽怎么办 小狗脱毛严重怎么办 狗长期脱毛怎么办 狗夏天脱毛怎么办 狗换季脱毛怎么办 夏天狗脱毛怎么办 萨摩毛打结怎么办 萨摩毛严重打结怎么办 萨摩毛根部打结怎么办 萨摩拉稀怎么办 毁容之后怎么办 脸毁容了怎么办 激光点痣后反黑怎么办 点完痣后化妆了怎么办 点完痣化妆了怎么办 药水点痣没点掉怎么办 点痣后色素沉着怎么办 药水点痣黑印怎么办 点完痣需要化妆怎么办 掉进山洞怎么办 一百块撕成两半怎么办