原文链接:点我
做了一个现实折线图的图表,通过右上角icon可以自由切换成柱状图,表格。
在表格中遇到的一点小问题,解决方案如下:
1、场景重现
这是一个显示两个折线图的图表,一切看起来都很顺利。
但是点击红色箭头所指的图标,这个作用就是以表格的形式展现。
展现如下。
很丑是吧,测试姐姐说一定要改掉。
附加一下右上角的实现代码,在options配置项加下面的配置就OK。
1 //右上角切换实现方法 2 toolbox: { 3 show: true, 4 right: '5%', 5 feature: { 6 dataView: { 7 readOnly: true 8 }, 9 magicType: {type: ['line', 'bar']} 10 } 11 },
2、解决方案
echarts给的解决的办法就是自定义。
下面写了一个小表格,opt包含了所有折线图的数据,自己组装下。
可以console看看都有什么。
1 optionToContent: function (opt) { 2 let axisData = opt.xAxis[0].data; //坐标数据 3 let series = opt.series; //折线图数据 4 let tdHeads = '<td style="padding: 0 10px">时间</td>'; //表头 5 let tdBodys = ''; //数据 6 series.forEach(function (item) { 7 //组装表头 8 tdHeads += `<td style="padding: 0 10px">${item.name}</td>`; 9 }); 10 let table = `<table border="1" style="margin-left:20px;border-collapse:collapse;font-size:14px;text-align:center"><tbody><tr>${tdHeads} </tr>`; 11 for (let i = 0, l = axisData.length; i < l; i++) { 12 for (let j = 0; j < series.length; j++) { 13 //组装表数据 14 tdBodys += `<td>${ series[j].data[i]}</td>`; 15 } 16 table += `<tr><td style="padding: 0 10px">${axisData[i]}</td>${tdBodys}</tr>`; 17 tdBodys = ''; 18 } 19 table += '</tbody></table>'; 20 return table; 21 }
改完效果如下,大家可以自己试试看哦。可以改成自己想要的风格哦。
3、总结
和数据视图有关的都可以这样改,不一定是我的那个场景。
如果项目中图表很多,可以把这段代码抽取出来,毕竟篇幅很长。
写这篇文章,主要是自己刚学会,其次是搜了一会没找到合适的答案。就分享下自己的小喜悦吧,嘻嘻。