创建echart多个联动的示例代码
网络 2018-12-21 2669
效果如下
html代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <div class="contain"> <div class="sel"> <div class="sel1"> <div class="top"> <span>选择时间间隔</span> <div class="show"> <span>one second</span> <i class="glyphicon glyphicon-chevron-right"></i> </div> </div> <div class="block"> <div leap="second">one second</div> <div leap="minute">one minute</div> <div leap="hour">one hour</div> <div leap="day">one day</div> <div leap="week">one week</div> <div leap="month">one month</div> <div class="active" leap="year">one year</div> </div> </div> <div class="sel2"> <div class="top"> <span>选择数据个数</span> <div class="show"> <span>5</span> <i class="glyphicon glyphicon-chevron-right"></i> </div> </div> <div class="block"> <div leap="5">5</div> <div leap="10">10</div> <div leap="15">15</div> <div leap="20">20</div> <div leap="25">25</div> <div leap="30">30</div> <div leap="35">35</div> </div> </div> <div class="zybtn">确定</div> </div> <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="main" style="width: 1000px;height:300px;margin-top:45px;"></div> <div id="main2" style="width: 1000px;height:300px;"></div> </div> |
css代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | body { margin: 0; padding: 0; background-color: #eee; } .contain { padding: 10px; } .sel { position: absolute; height: 250px; z-index: 10; } .sel>div { float: left; margin-right: 10px; } .top span { display: inline-block; width: 100px; height: 30px; } .top .show { width: 125px; height: 25px; float: right; border: 1px solid #444; padding-left: 5px; position: relative; } .block { float: right; position: relative; border-radius: 5px; padding: 5px; width: 120px; box-shadow: 1px 1px 5px #444; display: none; background-color: #fff; } .block>div { height: 25px; line-height: 25px; padding-left: 5px; border-radius: 5px; cursor: pointer; } .block>div:hover { background-color: #D3E3E5; } .block>div.active { background-color: #087C90; color: #fff; } .zybtn { width: 80px; height: 30px; border-radius: 5px; background-color: #46AD08; line-height: 30px; text-align: center; color: #fff; cursor: pointer; } i.glyphicon { top: 3px; right: 5px } |
js代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | function drawchart(timearr, dataarr) { // 基于准备好的dom,初始化echarts实例 var myChart1 = echarts.init(document.getElementById('main')); var myChart2 = echarts.init(document.getElementById('main2')); // 指定图表的配置项和数据 var option1 = { title: { text: 'chart1' }, tooltip: { show: true, trigger: 'axis', axisPointer: { type: 'line' }, lineStyle: { color: '#000', } }, legend: { data: ['销量1'] }, grid:{ y2:140 }, xAxis: [{ type: 'category', data: timearr, axisLabel: { interval: 0, //横轴信息全部显示 rotate: -45, //-30度角倾斜显示 } }], yAxis: [{ type: 'value', }], series: [{ name: '销量1', type: 'line', data: dataarr }] }; var option2 = { title: { text: 'chart2' }, tooltip: { show: true, trigger: 'axis', axisPointer: { type: 'line' }, lineStyle: { color: '#000', } }, legend: { data: ['销量2'] }, grid:{ y2:140 }, xAxis: [{ type: 'category', data: timearr, axisLabel: { interval: 0, //横轴信息全部显示 rotate: -45, //-30度角倾斜显示 } }], yAxis: [{ type: 'value', }], series: [{ name: '销量2', type: 'line', data: dataarr }] }; // 为echarts对象加载数据 myChart1.setOption(option1); myChart2.setOption(option2); //联动配置 // 分别设置每个实例的 group id myChart1.group = 'group1'; myChart2.group = 'group1'; echarts.connect('group1'); // 或者可以直接传入需要联动的实例数 // echarts.connect([myChart1,myChart2]); } // 获取x轴时间字符串 function gettimestr(tseconds) { var str = ''; var year = new Date(tseconds).getFullYear(); var month = new Date(tseconds).getMonth() + 1; var date = new Date(tseconds).getDate(); var hour = new Date(tseconds).getHours(); var minute = new Date(tseconds).getMinutes(); var second = new Date(tseconds).getSeconds(); if (month < 10) { month = "0" + month } if (date < 10) { date = "0" + date } if (hour < 10) { hour = "0" + hour } if (minute < 10) { minute = "0" + minute } if (second < 10) { second = "0" + second } str += year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second; return str; } getsel() // 获取两个数值 function getsel() { $("i").on("click", function () { var that = $(this); var block = that.parents(".top").next(); // 点击i触发函数,判断类型 if ($(this).hasClass("glyphicon-chevron-right")) { $(this).removeClass("glyphicon-chevron-right"); $(this).addClass("glyphicon-chevron-down") block.children("div").each(function () { $(this).removeClass("active") }); block.slideDown(); } else if ($(this).hasClass("glyphicon-chevron-down")) { $(this).removeClass("glyphicon-chevron-down"); $(this).addClass("glyphicon-chevron-right") block.slideUp() } block.children("div").on("click", function () { $(this).addClass("active"); that.prev("span").html($(this).html()) that.removeClass("glyphicon-chevron-down"); that.addClass("glyphicon-chevron-right") block.slideUp() }); }); var val1 = 1000; var val2 = 5; $(".zybtn").on("click", function () { switch ($(".sel1 .show span").html()) { case 'one second': val1 = 1000; break; case 'one minute': val1 = 1000 * 60; break; case 'one hour': val1 = 1000 * 3600; break; case 'one day': val1 = 1000 * 3600 * 24; break; case 'one week': val1 = 1000 * 3600 * 24 * 7; break; case 'one month': val1 = 1000 * 3600 * 24 * 30; break; case 'one year': val1 = 1000 * 3600 * 24 * 365; break; } switch ($(".sel2 .show span").html()) { case '5': val2 = 5; break; case '10': val2 = 10; break; case '15': val2 = 15; break; case '20': val2 = 20; break; case '25': val2 = 25; break; case '30': val2 = 30; break; case '35': val2 = 35; break; } changedata(val1, val2) }) changedata(val1, val2) } function changedata(sel1, sel2) { // 获取当前日期 var getdate = new Date(); var tseconds = getdate.getTime(); var timearr = []; var dataarr = []; for (var i = 0; i < sel2; i++) { timearr.push(gettimestr(tseconds - sel1 * i)) dataarr.push(Math.ceil(Math.random() * 10)) } drawchart(timearr, dataarr) } |
PS:echart多表联动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 | <!DOCTYPE html> <head> <meta charset="utf-8"> <title>ECharts</title> </head> <body> <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="main1" style="height:200px"></div> <div id="main2" style="height:200px"></div> <div id="main3" style="height:200px"></div> <div id="main4" style="height:200px"></div> <!-- ECharts单文件引入 --> <script src="http://echarts.baidu.com/build/dist/echarts.js"></script> <script type="text/javascript"> // 路径配置 require.config({ paths: { echarts: 'http://echarts.baidu.com/build/dist' } }); // 使用 require( [ 'echarts', 'echarts/chart/bar', // 使用柱状图就加载bar模块,按需加载 'echarts/chart/line' ], function (ec) { // 基于准备好的dom,初始化echarts图表 var myChart1 = ec.init(document.getElementById('main1')); var myChart2 = ec.init(document.getElementById('main2')); var myChart3 = ec.init(document.getElementById('main3')); var myChart4 = ec.init(document.getElementById('main4')); myChart1.setTheme("macarons"); myChart2.setTheme("macarons"); myChart3.setTheme("macarons"); myChart4.setTheme("macarons"); var option1 = { title : { text: '温度状况', subtext: '纯属虚构' }, tooltip : { trigger: 'axis' }, legend: { data:['设定温度','进水温度','出水温度','环境温度'] }, toolbox: { show : true, feature : { mark : {show: true}, dataView : {show: true, readOnly: false}, magicType : {show: true, type: ['line', 'bar', 'stack', 'tiled']}, restore : {show: true}, saveAsImage : {show: true} } }, xAxis : [ { type : 'category', //x轴为类目类型 axisLabel:{ show:true, interval:0, rotate:45 }, data : ['00:00:00','00:05:00','00:10:00','00:15:00','00:20:00','00:25:00','00:30:00','00:35:00','00:40:00','00:45:00'] }], yAxis : [ { type : 'value' //y轴为值类型 } ], series : [{ name:'设定温度', type:'line', smooth:true, data:[55,55,55,55,55,55,55,55,55,55] }] } var option2 = { tooltip : { trigger: 'axis' }, legend: { y:-30, data:['设定温度','进水温度','出水温度','环境温度'] }, toolbox: { y : -30, show : true, feature : { mark : {show: true}, dataView : {show: true, readOnly: false}, magicType : {show: true, type: ['line', 'bar', 'stack', 'tiled']}, restore : {show: true}, saveAsImage : {show: true} } }, xAxis : [ { type : 'category', //x轴为类目类型 axisLabel:{ show:true, interval:0, rotate:45 }, data : ['00:00:00','00:05:00','00:10:00','00:15:00','00:20:00','00:25:00','00:30:00','00:35:00','00:40:00','00:45:00'] }], yAxis : [ { type : 'value' //y轴为值类型 } ], series : [{ name:'进水温度', type:'line', smooth:true, data:[15,15,16,18,18,19,19,19,19,19] }] } var option3 = { tooltip : { trigger: 'axis' }, legend: { y : -30, data:['设定温度','进水温度','出水温度','环境温度'] }, toolbox: { y : -30, show : true, feature : { mark : {show: true}, dataView : {show: true, readOnly: false}, magicType : {show: true, type: ['line', 'bar', 'stack', 'tiled']}, restore : {show: true}, saveAsImage : {show: true} } }, xAxis : [ { type : 'category', //x轴为类目类型 axisLabel:{ show:true, interval:0, rotate:45 }, data : ['00:00:00','00:05:00','00:10:00','00:15:00','00:20:00','00:25:00','00:30:00','00:35:00','00:40:00','00:45:00'] }], yAxis : [ { type : 'value' //y轴为值类型 } ], series : [{ name:'出水温度', type:'line', smooth:true, data:[20,25,30,35,38,44,46,48,53,56] }] } var option4 = { tooltip : { trigger: 'axis' }, legend: { y : -30, data:['设定温度','进水温度','出水温度','环境温度'] }, toolbox: { y : -30, show : true, feature : { mark : {show: true}, dataView : {show: true, readOnly: false}, magicType : {show: true, type: ['line', 'bar', 'stack', 'tiled']}, restore : {show: true}, saveAsImage : {show: true} } }, xAxis : [ { type : 'category', //x轴为类目类型 axisLabel:{ show:true, interval:0, rotate:45 }, data : ['00:00:00','00:05:00','00:10:00','00:15:00','00:20:00','00:25:00','00:30:00','00:35:00','00:40:00','00:45:00'] }], yAxis : [ { type : 'value' //y轴为值类型 } ], series : [{ name:'环境温度', type:'line', smooth:true, data:[15,15,15,15,15,15,15,15,15,15] }] } // 为echarts对象加载数据 myChart1.setOption(option1); myChart2.setOption(option2); myChart3.setOption(option3); myChart4.setOption(option4); //联动配置 myChart1.connect([myChart2, myChart3,myChart4]); myChart2.connect([myChart1, myChart3,myChart4]); myChart3.connect([myChart2, myChart1,myChart4]); myChart4.connect([myChart2, myChart3,myChart1]); } ); </script> </body> |