在使用echarts3作图表的时候,可能会遇到一些特殊的需求:php
星期一到星期四这几个点的折线显示一个颜色,周五到周日这几个点的折线显示另一个颜色,来起到强调区别的做用。git
先看一下效果图,你会有一个更清晰的认识:github
从图中你们能够看到,整个折线图分了2段颜色:周一到周四的折线是红色,周五到周日的折线是黑色。 这样一来,是否是就有个很明显的强调区别的做用啦。api
demo下载点击这里。数组
那么,怎么去实现这个效果呢?别着急,一步一步来,往下看。app
看到这样的需求,第一反应就是去api里看看有支持的函数没。。。 在api找到半天,果真不支持。领导非要这样作,echarts3的api里又不支持,那么怎么办? 答案:换思路echarts
1.折线图的数据点在哪里被赋值的?dom
咱们知道在echarts中图表是经过series来实现的:函数
其中圈红的第一个就是图形类型为折线图时用到的配置,折线图的这些数据点都是经过里面的这个data数组来生成的。spa
2.拆分为多个series
将一个完整的折线分红两段折线,不一样的折线显示不一样的颜色便可。
咱们知道周一到周日总共是7个点,series的data数据为:
series: [ { name: '指数', type: 'line', data: [4, 8, 16, 32, 64, 128, 256] } ]
若是拆分红两段折线的话,就得用两个series,两个series就得有两个数据集(data数组).
其中第一个series的数据集为:
4, 8, 16, 32, 64
第二个series的数据集为:
128,256
可是在echarts中,图形的每个点都要有与x轴和y轴对应的,不然,画出来的图形是与数据对应不上的。
因此咱们须要对上面的两个数组进行一下改造。
3.普及一小技巧
在echarts中,如果不想让某个点展现,则这个点对应的data数值能够用'-'来表示。 反正这个知识点没有在echarts3的api里提到,应该在echarts2中继承下来的知识点吧。
4.转化数据集
知道上面这个小技巧后,咱们就能够把这两个数据集写成下面这种格式了: series[0].data:
[4, 8, 16, 32, 64,'-','-']
series[1].data:
['-','-','-','-','-',128,256]
既然思路都有了,那么咱们开始试试吧。
1.option的配置和主要代码以下:
// blog: phping.sinaapp.com var dom = document.getElementById("container"); var myChart = echarts.init(dom); option = null; option = { title: { text: 'echarts3的折线图分段显示不一样的颜色', left: 'center', link: 'http://phping.sinaapp.com' }, tooltip: { trigger: 'item', formatter: '{a} <br/>{b} : {c}' }, legend: { left: 'left', data: ['指数'] }, xAxis: { type: 'category', name: 'x', splitLine: {show: false}, data: ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'] }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, yAxis: { type: 'log', name: 'y' }, series: [ { name: '指数', type: 'line', data:[] }, { name: '指数', type: 'line', data:[] } ] }; if (option && typeof option === "object") { var startTime = +new Date(); option.series[0].data = [4, 8, 16, 32, 64,'-','-']; option.series[1].data = ['-','-','-','-',64,128,256]; myChart.setOption(option, true); }
2.走一个试试:
两条线是分出来了,可是中间是有个断点。若是你以为这样影响需求的话,则直接在series[1].data里把这个点补出来便可。
2.1原来的格式:
option.series[0].data = [4, 8, 16, 32, 64,'-','-']; option.series[1].data = ['-','-','-','-','-',128,256];
2.2修改成如今的格式:
篇幅所限,我这里没有详细列出来.
详细请访问个人blog: echarts3的折线图怎么分段显示不一样的颜色
--- ---
再次刷新,是否是两条断线连上了呢。效果就跟文首的demo是同样的了。
1.碰见此类需求时,先看看api里提供了相似的方法没有,有的话,就不用费大头筋儿了;
2.没有的话,就得转变思路了,将一个折线分红多个折线。
3.巧妙利用四.3中的小知识点来绘制空点
4.实际开发中可能要比这个demo要复杂一些,可是基本思路都是同样的。
demo下载点击这里。欢迎你们访问个人blog,有更精彩的文章吆!码字不易,转载请注明出处。