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的文字内容过长的解决办法】转载于:https://www.cnblogs.com/lxl0419/p/9081453.html
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量