问题

先看一下正常的情况

再看一下显示不全的情况

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


分析

先贴一下页面代码

HTML

<div class="row-wrapper">
<div class="div-flex" style="text-align:center">
<div class="chart-tab selected" id="chart-tab0">最近30天</div>
<div class="chart-tab" id="chart-tab1">最近15周</div>
<div class="chart-tab" id="chart-tab2" style="border-right: 1px #dcdcdc solid;">最近12个月</div>
</div>
<div id="chart-line"></div>
</div>

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,发现……没用。

看下图

修改了marginpadding 的之后在 chrome的debug模式下看 canvas 是这样的,能看到其实y轴文字部分还是在content(蓝色部分)里面的,所以就能明白为什么修改 canvasmargin、padding 不会起作用了。
于是能得出结论,这是 canvas 绘图的时候就定了的,所以要通过修改传给 echarts 的参数来修改。

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


解决办法

官网在此:http://echarts.baidu.com/

我们要看的是配置项的部分:http://echarts.baidu.com/option.html#title

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

  1. yAxis.axisLabel.margin:刻度标签与轴线之间的距离。默认值是8,可以改小一点。不过本来的值已经很小了,这个没多大作用。
  2. yAxis.axisLabel.formatter:刻度标签的内容格式器,支持字符串模板和回调函数两种形式。比如可以设置太长了换行之类的。
  3. grid.left:grid 组件离容器左侧的距离。默认值是10%。

最后的代码如下。这里就只列出修改了的部分了,比原来添加了 grid.leftyAxis.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:最后忍不住要吐槽,这几个配置项找了我老半天啊囧

Echarts 折线图y轴标签值太长时显示不全的解决办法的更多相关文章

  1. Echarts 折线图y轴标签值过长 显示

    参考: https://blog.csdn.net/dandelion_drq/article/details/79270597 改变Y轴单位:https://www.cnblogs.com/cons ...

  2. 百度echarts使用--y轴label数字太长难以全部显示

    问题: 今天遇到个小问题,我们系统前端呈现使用了百度echarts.在绘制折线图的时候,因为数字过大,导致显示出现了问题. 解决方案: 左边y轴的值默认是根据我们填充进去的值来默认分割的,因为原始值就 ...

  3. layui的select下拉框太长被遮挡了的解决办法

    layui的select下拉框太长采用滚动条的形式出现,可以给select的dl加一个最大高度,具体的效果如下图 .layui-form-select dl { max-height:160px; }

  4. d3.js 教程 模仿echarts折线图

    今天我们来仿echarts折线图,这个图在echarts是折线图堆叠,但是我用d3改造成了普通的折线图,只为了大家学习(其实在简单的写一个布局就可以).废话不多说商行代码. 1 制作 Line 类 c ...

  5. 实现Echarts折线图的虚实转换

    需求:医院的体温单,在统计体温时,对于正常情况下统计的体温数据,需要显示实线:对于进行物理降温后统计的体温数据,需要显示虚线. 现有的体温单是运用 Echarts 折线图,统一用实线显示.因此在这基础 ...

  6. Highcharts属性与Y轴数据值刻度显示Y轴最小最大值

    Highcharts 官网:https://www.hcharts.cn/demo/highcharts Highcharts API文档:https://api.hcharts.cn/highcha ...

  7. ECharts折线图堆叠设置为不堆叠的方法

    下图是ECharts折线图堆叠的官方源码,设置折线图不堆叠只需要将每一个stack的值设置为不一样的名称或者将stack属性删除即可. option = { title: { text: '折线图堆叠 ...

  8. echarts折线图动态改变数据时的一个bug

    echarts折线图中当增加dataZoom,修改start大于0的时候,会出现折线混乱,变成竖直的线,绘制有问题. 解决方法,在dataZoom中增加filterMode: 'empty' http ...

  9. echarts折线图,数据切换时(最近七天)绘图不合理现象

    echarts折线图,当进行数据切换时存在绘制不合理的问题,数据没错,但绘制不对. 两个0之间的连线应该是平滑直线,如图: 正确的显示: 解决: 在myCharts.setOption(option) ...

随机推荐

  1. 关于C++ const 的全面总结《转》

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助. Const 是C++中常用的类型修饰符,常类型是指使用类 ...

  2. redux (一)

    redux 是一个状态管理的库. redux认为页面所有的变化,都是基于状态的改变触发的,所以我们维护一个应用的时候,都是在维护这些状态.而 redux 就是为了维护状态而生的. API create ...

  3. 性能优化之reflow和repaint

    本文主要介绍一下什么是reflow,repaint, 怎样避免它们造成的不良影响, 怎么通过工具查看分析它们. 一.首先对浏览器渲染引擎下网页呈现过程简要说一下: 浏览器的渲染引擎开始解析html构建 ...

  4. JVM内存越多,能创建的线程越少,越容易发生java.lang.OutOfMemoryError: unable to create new native thread。

    一.认识问题: 首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse ...

  5. 20165230 2017-2018-2 《Java程序设计》第3周学习总结

    20165230 2017-2018-2 <Java程序设计>第3周学习总结 教材学习内容总结 本周主要学习了类与对象. 包括创建对象与构造方法. 了解了程序是由若干个类所构成:类分为类名 ...

  6. Java中调用文件中所有bat脚本

    //调用外部脚本String fileips=null;//所有的路径String[] files=null;String fileip=null;//单个路径try { InputStream is ...

  7. 剑指Offer-链表中环的入口结点

    package LinkedList; import java.util.HashSet; /** * 链表中环的入口结点 * 一个链表中包含环,请找出该链表的环的入口结点. */ public cl ...

  8. 一些常见的shell命令和git命令

    shell命令: pwd : (Print Working Directory) 查看当前目录 cd (Change Directory) 切换目录,如 cd /etc ./当前目录  ../上级目录 ...

  9. curl/libcurl获取打开网页平均网速

    CURL: curl -o /dev/null -s -w %{http_code}:%{http_connect}:%{content_type}:%{time_namelookup}:%{time ...

  10. Java获取键盘输入

    方法一:在控制台接收字符串并将其打印出来,使用BufferedReader和InputStreamReader类实现 import java.io.*; public class Demo { pub ...