博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
echarts折线图不显示y轴值_Echarts 折线图y轴标签值太长时显示不全的解决办法
阅读量:6513 次
发布时间:2019-06-24

本文共 2243 字,大约阅读时间需要 7 分钟。

问题

先看一下正常的情况

再看一下显示不全的情况

所有的数据都是从后台取的,也就是说动态变化的,一开始的时候数据量不大不会出现问题,后面y轴的值越来越大的时候就出现了这个显示不全的情况。

分析

先贴一下页面代码

HTML

最近30天
最近15周
最近12个月

CSS

.row-wrapper {

padding: 10px 15px;

border-top: 8px #eee solid;

font-size: 15px;

color: #737373;

}

.chart-tab {

flex: 1;

border-top: 1px #dcdcdc solid;

border-left: 1px #dcdcdc solid;

border-top-left-radius: 5px;

border-top-right-radius: 5px;

}

.div-flex {

display: -webkit-box;

display: -webkit-flex;

display: flex;

}

#chart-line {

height: 26rem;

padding-left: 14px;

padding-top: 10px;

border: 1px #dcdcdc solid;

}

.selected {

background-color: #EAEAEA;

}

JS(这里只贴跟折线图有关的部分)

var lineChart = echarts.init(document.getElementById('chart-line'));

// 折线图配置

option = {

tooltip: {

trigger: 'axis',

hideDelay: '300'

},

xAxis: {

show: false,

type: 'category',

data: [1, 2, 3, 4, 5, 6, 7],

axisTick: {

inside: true,

alignWithLabel: true

}

},

yAxis: {

type: 'value',

name: '营业额(元)',

axisTick: {

inside: true

},

scale: true

},

series: [{

name: '营业额',

type: 'line',

data: [1100000, 2000000, 450000, 1370000, 1200000, 4030000, 2350000], // 因为是要分析的是前端问题,这里我就直接写一组很大的数据了,不管跟后台交互部分

lineStyle: {

normal: {

color: '#82c26b'

}

},

itemStyle: {

normal: {

color: '#82c26b'

}

}

}]

};

lineChart.setOption(option);

然后页面运行的时候生成的html是这样的

可以看到 id=chart-line 的 div 是我定义的,而它里面多了两个元素,一个 div 和一个 canvas。这两个就是 Echarts 运行之后添加上去的,其中 canvas 就是图表本身,外层的 div 是一个装它的容器。

于是我尝试一下修改这几个元素的 width、margin、padding,发现……没用。

看下图

修改了margin 和 padding 的之后在 chrome的debug模式下看 canvas 是这样的,能看到其实y轴文字部分还是在content(蓝色部分)里面的,所以就能明白为什么修改 canvas 的 margin、padding 不会起作用了。

于是能得出结论,这是 canvas 绘图的时候就定了的,所以要通过修改传给 echarts 的参数来修改。

好吧,那咱们就去官网看API咯……

解决办法

可以改的地方有下面几个:

yAxis.axisLabel.margin:刻度标签与轴线之间的距离。默认值是8,可以改小一点。不过本来的值已经很小了,这个没多大作用。

yAxis.axisLabel.formatter:刻度标签的内容格式器,支持字符串模板和回调函数两种形式。比如可以设置太长了换行之类的。

grid.left:grid 组件离容器左侧的距离。默认值是10%。

最后的代码如下。这里就只列出修改了的部分了,比原来添加了 grid.left 和 yAxis.axisLabel。

option = {

...

yAxis: {

type: 'value',

name: '营业额(元)',

axisTick: {

inside: true

},

scale: true,

axisLabel: {

margin: 2,

formatter: function (value, index) {

if (value >= 10000 && value < 10000000) {

value = value / 10000 + "万";

} else if (value >= 10000000) {

value = value / 10000000 + "千万";

}

return value;

}

},

},

grid: {

left: 35

},

...

};

最终效果还行。。

PS:最后忍不住要吐槽,这几个配置项找了我老半天啊囧

转载地址:http://svifo.baihongyu.com/

你可能感兴趣的文章
磁化强度
查看>>
C/C++ 数据范围
查看>>
LVS+keepalived+nginx
查看>>
monkey如何通过uiautomatorviewer的bounds坐标点击控件
查看>>
第22章,mysql数据库-1
查看>>
【亲测】教你如何搭建 MongoDB 复制集 + 选举原理
查看>>
虚拟化网络技术
查看>>
阿里云中间件推出全新开发者服务
查看>>
56.随机产生的id重复问题
查看>>
一个快速检测系统CPU负载的小程序
查看>>
java.lang.IllegalArgumentException: No bean specified
查看>>
Wireshark and Tcpdump tips
查看>>
第一课 计算机及操作系统基础知识
查看>>
windows2003单域迁移到2008R2服务器
查看>>
cacti相关资料网站
查看>>
我的友情链接
查看>>
网站的开发流程介绍(转)
查看>>
浅析:Android--Fragment的懒加载
查看>>
Linux操作系统目录和Linux常用的文件和目录管理命令
查看>>
DIY:自己动手做一个迷你 Linux 系统(二)
查看>>