echarts的axisLabel的文字内容过长的解决办法
Posted 夏目友人喵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了echarts的axisLabel的文字内容过长的解决办法相关的知识,希望对你有一定的参考价值。
通过查找资料学习,我总结了四种解决的办法,不一定是最好的,但是希望能够帮助到需要的童鞋,同时如果大家有什么更好的方法欢迎指导。
方法一:这种方法就是将文本内容转换为字符串数组,然后再按需求换行,需要每行显示几个字可以自己设置
axisLabel:{
interval: 0,
//rotate:30,
formatter: function(val) {
var strs = val.split(‘‘); //字符串数组
var str = ‘‘
for(var i = 0, s; s = strs[i++];) { //遍历字符串数组
str += s;
if(!(i % 8)) str += ‘\n‘; //按需要求余
}
return str
}
},
方法二:就是让坐标值的内容旋转一定的角度这样也可以全部显示出来
axisLabel:{
interval: 0,//让所有坐标值全部显示
rotate:30,//让坐标值旋转一定的角度
}
方法三:这种方法就是将文本内容按一定的长度截取,然后多余的部分用 ... 拼接代替,这个方法的一个缺点就是没办法直观的全部显示文本内容
axisLabel:{
interval: 0,
//rotate:30,
formatter: function (name) {
return (name.length > 8 ? (name.slice(0,8)+"...") : name );
},
}
方法四:这个方法和第一个方法类似,看起来比第一个方法复杂,不过能更完善一点
axisLabel : {
interval : 0,
function(params){
var newParamsName = "";// 最终拼接成的字符串
var paramsNameNumber = params.length;// 实际标签的个数
var provideNumber = 8;// 每行能显示的字的个数
var rowNumber = Math.ceil(paramsNameNumber / provideNumber);// 换行的话,需要显示几行,向上取整
/** 判断标签的个数是否大于规定的个数, 如果大于,则进行换行处理 如果不大于,即等于或小于,就返回原标签 */
if (paramsNameNumber > provideNumber) {// 条件等同于rowNumber>1
/** 循环每一行,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
}
}
一共就这么多了,如果有什么问题希望大家多多指导,希望对大家有帮助。
以上是关于echarts的axisLabel的文字内容过长的解决办法的主要内容,如果未能解决你的问题,请参考以下文章