zoukankan      html  css  js  c++  java
  • 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 += ' '; //按需要求余
                                        }
                                        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) + " ";
                                            }
                                            newParamsName += tempStr;// 最终拼成的字符串
                                        }
                                
                                    } else {
                                        // 将旧标签的值赋给新标签
                                        newParamsName = params;
                                    }
                                    //将最终的字符串返回
                                    return newParamsName
                                }
               }

    一共就这么多了,如果有什么问题希望大家多多指导,希望对大家有帮助。

    下面是我的公众号,大家可以关注一下,可以一起学习,一起进步:


  • 相关阅读:
    Linux线程同步方法
    Linux进程间通信:信号
    孤儿进程僵尸进程及其回收
    Linux守护进程
    Linux系统编程常见函数 (进程/线程)
    Linux系统编程常用函数 (文件/目录)
    C++实现贪吃蛇小游戏
    C++实现简易Vector类
    C++实现简易版字符串类
    《图解HTTP》读书笔记
  • 原文地址:https://www.cnblogs.com/lxl0419/p/9081453.html
Copyright © 2011-2022 走看看