highcharts类似功能:https:///rencht/hhhhLv/share echarts实现: 官网 https://echarts./zh/index.html 参考链接: https://segmentfault.com/q/1010000014133645?sort=created
https://blog.csdn.net/u014458962/article/details/105855267
https://www.cnblogs.com/shj-com/p/11327072.html
代码:line-stack.html (注:黑色为官方源代码 红色为新增内容)
<!DOCTYPE html> <html style="height: 100%"> <head> <meta charset="utf-8"> </head> <body style="height: 100%; margin: 0"> <div id="container" style="height: 100%"></div> <script type="text/javascript" src="https://cdn./npm/echarts@4/dist/echarts.min.js"></script> <script type="text/javascript" src="https://cdn./npm/echarts-gl@1/dist/echarts-gl.min.js"></script> <script type="text/javascript" src="https://cdn./npm/echarts-stat@1/dist/ecStat.min.js"></script> <script type="text/javascript" src="https://cdn./npm/echarts@4/dist/extension/dataTool.min.js"></script> <script type="text/javascript" src="https://cdn./npm/echarts@4/map/js/china.js"></script> <script type="text/javascript" src="https://cdn./npm/echarts@4/map/js/world.js"></script> <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=xfhhaTThl11qYVrqLZii6w8qE5ggnhrY&__ec_v__=20190126"></script> <script type="text/javascript" src="https://cdn./npm/echarts@4/dist/extension/bmap.min.js"></script> <script type="text/javascript"> var dom = document.getElementById("container"); var myChart = echarts.init(dom); var app = {}; option = null; option = { title: { text: '折线图堆叠' }, tooltip: { trigger: 'axis' }, legend: { data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎'] }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, toolbox: { feature: { saveAsImage: {} } }, xAxis: { type: 'category', boundaryGap: false, data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] }, yAxis: { type: 'value' }, series: [ { name: '邮件营销', type: 'line', stack: '总量', data: [120, 132, 101, 134, 90, 230, 210] }, { name: '联盟广告', type: 'line', stack: '总量', data: [220, 182, 191, 234, 290, 330, 310] }, { name: '视频广告', type: 'line', stack: '总量', data: [150, 232, 201, 154, 190, 330, 410] }, { name: '直接访问', type: 'line', stack: '总量', data: [320, 332, 301, 334, 390, 330, 320] }, { name: '搜索引擎', type: 'line', stack: '总量', data: [820, 932, 901, 934, 1290, 1330, 1320] } ] }; var triggerAction = function(action, selected) { legend = []; for ( name in selected) { if (selected.hasOwnProperty(name)) { legend.push({name: name}); } } myChart.dispatchAction({ type: action, batch: legend }); }; var isFirstUnSelect = function(name,selected) { var unSelectedCount = 0; for ( item in selected) { if (!selected.hasOwnProperty(item)) { continue; }
if (selected[item] == false) { ++unSelectedCount; } } return unSelectedCount==1 && selected[name] == false; }; var isAllUnSelected = function(selected) { var selectedCount = 0; for ( item in selected) { if (!selected.hasOwnProperty(item)) { continue; } // 所有 selected Object 里面 true 代表 selected, false 代表 unselected if (selected[item] == true) { ++selectedCount; } } return selectedCount==0; }; if (option && typeof option === "object") { myChart.on('legendselectchanged', function (params) { // console.log(params); var selected = params.selected; var name = params.name; // current clicked one if (selected != undefined) { // myChart.dispatchAction({ // type: 'legendInverseSelect' // }) if (isFirstUnSelect(name,selected)) { triggerAction('legendToggleSelect', selected); } else if (isAllUnSelected(selected)) { triggerAction('legendSelect', selected); } } }); myChart.setOption(option, true); } </script> </body> </html>
|