echarts柱状图、折线图求合,通过formatter回调函数自定义tooltip展示格式
来源:互联网 发布:java用float判断大小 编辑:程序博客网 时间:2024/06/02 04:18
前一篇文章写了思路一:给series集合末尾多加一栏用于展示合计,但缺点较多,所以又想了另一个方法。
思路二:通过tooltip中的函数formatter自定义鼠标触发时的展示格式,先看展示效果
最底下加了合计一栏
当我们去掉“安卓”选项时:合计的值也动态的改变了
好了,接下来就看实际的代码吧:
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>ECharts2</title> <!-- 引入 echarts.js --> <script src="https://cdn.bootcss.com/echarts/3.5.4/echarts.min.js"></script></head><body> <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="main" style="width:1600px;height:800px;"></div> <script type="text/javascript"> // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById('main')); // 指定图表的配置项和数据 var option = { tooltip : { trigger :'axis', axisPointer : { type : 'line' }, formatter:'' //思路二:给tooltip一个函数,点击的时候展示数据 }, title: { text:'xxx激活设备数', left:'left' , top:'10px', textStyle: { color: '#666', fontWeight: 'normal' } }, toolbox: { feature: { dataView: {show: true, readOnly: false}, magicType: {show: true, type: ['line', 'bar']}, restore: {show: true}, saveAsImage: {show: true} } }, grid: { y: '10%', y2: '10%' }, legend: { data:['安卓','诺基亚','苹果'] }, xAxis:{ type: 'category', axisLabel:{ interval: 0, // {number} rotate: 40 }, data: ['星期三','星期四','星期五'] }, yAxis:{ type: 'value', min: 0, interval: 10000 }, series: [ { name:'安卓', type:'line', stack:'xxx', itemStyle: { normal: { color: '#548dd5' } }, data: [["星期三",10000],["星期四",15000],["星期五",20000]] }, { name:'诺基亚', type:'line', stack:'xxx', itemStyle: { normal: { color: '#000' } }, data: [["星期三",11000],["星期四",16000],["星期五",25000]] }, { name:'苹果', type:'line', stack:'xxx', itemStyle: { normal: { color: '#e56c0a' } }, data: [["星期三",12000],["星期四",18000],["星期五",28000]] } ] }; //替换formatter var fun = function (params) { var myseries = option.series; var chartType = option.odao_admin.chart_type; var data3 =0; var axis =[]; for(var i=0,l=params.length;i<l;i++){ for (var j = 0; j < myseries.length; j++) { if(myseries[j].name == params[i].seriesName){ axis.push(params[i].axisValue) var res = axis[0] +'</br>'; //取对应x轴的值 } } } for(var i=0,l=params.length;i<l;i++){ for (var j = 0; j < myseries.length; j++) { if(myseries[j].name == params[i].seriesName){ var color = params[i].color; if(chartType == 'bar_back'){ res += '<span style=" font-size:22px;color:'+ color +';">'+' ● '+'</span>' + params[i].seriesName +' : '+params[i].data[0]+'</br>'; //添加颜色并赋值 }else{ res += '<span style=" font-size:22px;color:'+ color +';">'+' ● '+'</span>' + params[i].seriesName +' : '+params[i].data[1]+'</br>'; //添加颜色并赋值 } } } } for(var i=0,l=params.length;i<l;i++){ if(chartType == 'bar_back'){ data3 += params[i].data[0] //反转图重新计算总和 }else{ data3 += params[i].data[1] } } var res =res + '<span style="font-size:22px;color:black;">'+' ● '+'</span>' + ' 合计:' +data3; return res; } //加载页面时候替换tooltip的formatter option["tooltip"]["formatter"] = fun // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option); //legend点击事件,根据传过来的obj.selected得到状态是true的params对应的series的下标,再去计算总和 myChart.on("legendselectchanged", function(obj) { var changefun = function (params) { var b = obj.selected , d = []; var data3 =0; var myseries = option.series; var chartType = option.odao_admin.chart_type; var axis =[]; for(var i=0,l=params.length;i<l;i++){ for (var j = 0; j < myseries.length; j++) { if(myseries[j].name == params[i].seriesName){ axis.push(params[i].axisValue) var res = axis[0] +'</br>'; //取x轴的值 } } } for(var i=0,l=params.length;i<l;i++){ for (var j = 0; j < myseries.length; j++) { if(myseries[j].name == params[i].seriesName){ var color = params[i].color; if(chartType == 'bar_back'){ res += '<span style=" font-size:22px;color:'+ color +';">'+' ● '+'</span>' + params[i].seriesName +' : '+params[i].data[0]+'</br>'; //反转图添加颜色并赋值 }else{ res += '<span style=" font-size:22px;color:'+ color +';">'+' ● '+'</span>' + params[i].seriesName +' : '+params[i].data[1]+'</br>'; //添加颜色并赋值 } } } } for(var key in b){ if(b[key]){ for(var i=0,l=params.length;i<l;i++){ var changename = params[i].seriesName; if(changename == key){ d.push(i); //得到状态是true的legend对应的params的下标 } } } } for(var i=0,l=d.length;i<l;i++){ for(var j=0,h=params.length;j<h;j++){ if(d[i] == j){ if(chartType == 'bar_back'){ data3 += params[i].data[0] //反转图重新计算总和 }else{ data3 += params[i].data[1] } } } } var res =res + '<span style="font-size:22px;color:black;">'+' ● '+'</span>' + ' 合计:' +data3; return res; } option["tooltip"]["formatter"] = fun1 myChart.setOption(option); }) </script></body></html>
代码有点长,有看不懂的地方,欢迎各位留言,我会尽量解答。
阅读全文
0 0
- echarts柱状图、折线图求合,通过formatter回调函数自定义tooltip展示格式
- echarts 折线图/柱状图 tooltip格式定制
- 【ECHARTS】 formatter回调函数
- ECharts折线图tooltip提示框格式自定义
- Echarts tooltip 自定义formatter设置字体颜色
- echarts(三)折线柱状图
- Echarts自定义formatter
- ECharts地图中tooltip提示框通过formatter分别显示多个数值
- 百度ECharts---android在线展示统计图表(折线图\柱状图\饼状图)
- ECharts 自定义动态tooltip
- 自定义折线图/柱状图
- echarts自定义柱状图数字
- Echarts柱状图,饼状图,折线图案例
- Echarts柱状图,饼状图,折线图案例
- ssh下echarts折线和柱状图
- ECharts之柱状图 饼状图 折线图
- Highcharts 的formatter回调函数获取series的属性
- echarts自定义tooltip绘制轨迹
- 日志服务Flink Connector《支持Exactly Once》
- 大数据WEB阶段(二十)更新丢失
- IDEA+SLIKSVN配置以及使用教程
- Test
- 6轴机器人运动学正解,逆解2
- echarts柱状图、折线图求合,通过formatter回调函数自定义tooltip展示格式
- 导出数据库表结构
- 稀疏重建-->密集重建的过渡文件
- 【iOS】神坑!iOS8在xcode9.2图片显示异常
- 【C#编程最佳实践 三】接口使用实践
- Linux基本命令
- SQLyog注册码
- 针对js事件的实践与练习(二)
- numpy数组运算