ECharts设置X轴axisLabel自适应

江汉曾为客,相逢每醉还。
浮云一别后,流水十年间

制作echarts的柱状图时我们发现axisLabel的长度过长时文字会堆叠在一起:

有些网站选择倾斜axisLabel来显示,或者让axisLabel完全竖直,效果都很差,我这里采用计算x轴刻度宽度的方法来进行换行处理:

echarts将柱状图分为grid,X轴Label和Y轴Label三个部分;

我们首先计算每个X轴Label大致可以显示多少个字:

var xAxisData = ["something...","something...","something...","something..."]
var gridWidth = 681; //可以根据canvas的宽度和grid的right,left,width进行计算
var fontsize = 14; //字体大小
var wordNum = parseInt((gridWidth / xAxisData.length) / fontsize);

然后在xAxis.axisLabel的formatter中设置换行:

 xAxis: {
     data: xAxisData,
     type: 'category',
     axisLabel: {
         interval: 0,
         formatter: function (value, index) {
             var strs = value.split('');
             var str = ''
             for (var i = 0, s; s = strs[i++];) {
                 str += s;
                 if (!(i % wordNum)) str += '\n';
             }
             return str
         }
     }
 }

这时我们发现如果grid的bottom默认为60,意味着x轴到canvas底部只能放下3行文字,所以我们需要调整grid的高度来放下更多的行:

计算最多有多少行,并根据最大行数设置chart容器高度:

var xAxisData = ["something...", "something...", "something...", "something..."]
var gridWidth = 681;
var fontsize = 14; //字体大小默认12px,这里设置成14可以保证label之间的间距
var wordNum = parseInt((gridWidth / xAxisData.length) / fontsize);
var maxLine = 0;
for (var i = 0; i < xAxisData.length; i++) {
    var flag = parseInt(xAxisData[i].length / wordNum) + 1;
    if (flag > maxLine) maxLine = flag;
}
//改变chart容器高度,340为dom的height减去grid的高度和top:
//此句放在echarts.init(dom)之前:
document.getElementById(id).style.height += (340 + max * 12) + "px";

设置grid的bottom:

grid: {
  bottom: (max + 1) * 12, //字体大小默认12px
}

这样设置好就可以像上图那样自适应显示

当我们使用的dataZoom工具是时候:

为了让我们的缩放grid的时候重新计算每行显示多少字体,我们可以使用监听datazoom事件来完成:

myChart.on('datazoom', function (params) {
    if (params.batch) {
        var start = params.batch[0].start;
        var end = params.batch[0].end;
    } else {
        var start = params.start;
        var end = params.end;
    }
    var cur_col_num = ((end - start) / 100) * xAxisData.length; //计算缩放后可以显示几个柱子
    wordNum = parseInt(Math.ceil((gridWidth / cur_col_num)) / 14);//重新计算wordNum
});

因为缩放的时候会触发我们设置的axisLabel的formatter,所以只要重新计算wordNum,我们的label就会随着缩放而改变每行显示的字:


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容

  • This chapter covers the basic setup for using this librar...
    ngugg阅读 995评论 0 1
  • Can't get dom width or height echarts解决方案 var mainContain...
    飞豹豹豹豹豹阅读 1,555评论 0 0
  • 8. Setting Colors Since release v1.4.0, the ColorTemplate...
    ngugg阅读 704评论 0 0
  • [echarts属性的设置(完整大全)]转自https://www.cnblogs.com/benmumu/p/8...
    雅雅的前端工作学习阅读 297评论 0 0
  • 动物园几则趣事:a.昨天刚到动物园,一一就拉粑粑了,换完尿布一一指着一个水坑说长颈鹿出来。b.骑马马肩看大象时一一...
    康康recording阅读 116评论 0 1