ECharts大屏可视化【词云,堆积柱状图,折线图,南丁格尔玫瑰图】

一.简介

  参考ECharts快速入门:https://www.cnblogs.com/yszd/p/11166048.html

二.代码实现

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4    <meta charset="UTF-8">
  5    <title>ECharts入门</title>
  6 </head>
  7 <body>
  8    <!-- 为ECharts准备一个具备大小(宽高)的DOM容器-->
  9     <div style='width:100%;height:100%'>
 10         <div id='back' style='width:60%;height:400px;float:left;'></div>
 11            <div id='main' style='width:40%;height:400px;float:left;'></div>
 12            <div id='left' style='width:60%;height:400px;float:left;'></div>
 13            <div id='right' style='width:40%;height:400px;float:left;'></div>
 14     </div>
 15    
 16    <!-- 引入ECharts文件 -->
 17    <script src='js/echarts-all.js'></script>
 18    <script src='js/echarts-wordcloud.min.js'></script>
 19    <script>
 20        function createRandomItemStyle(){
 21              return {
 22                 normal: {
 23                      color: 'rgb(' + [
 24                         Math.round(Math.random() * 160),
 25                         Math.round(Math.random() * 160),
 26                         Math.round(Math.random() * 160)
 27                     ].join(',') + ')' 
 28                 }
 29             }; 
 30         }
 31         //基于准备好的DOM,初始化echarts实例
 32         var myChart = echarts.init(document.getElementById('main'));
 33         var myChart2 = echarts.init(document.getElementById('back'));
 34         var myChart3 = echarts.init(document.getElementById('left'));
 35         var myChart4 = echarts.init(document.getElementById('right'));
 36         
 37         /* var loadingTicket = myChart.showLoading({
 38             text: 'loading',
 39             color: '#4cbbff',
 40             textColor: '#4cbbff',
 41             maskColor: 'rgba(0, 0, 0, 0.9)',
 42         });  */
 43         
 44           //指定图表的配置项和数据
 45         option = {
 46             title: {
 47                 text: '文本分析算法词云'
 48             },
 49             tooltip:{
 50                 trigger:'axis'
 51                 },
 52             toolbox: {
 53                 show: true,
 54                 feature:{
 55                     mark:{show:true},
 56                     dataView:{show:true,readOnly:false},
 57                     magicType:{show:true,type:['line','bar']},
 58                     restore:{show:true},
 59                     saveAsImage:{show:true}
 60                 }
 61             },
 62             series: [{
 63                 name: '词云',
 64                 type: 'wordCloud',
 65                 size: ['80%', '80%'],
 66                 textRotation : [0, 45, 90, -45],
 67                 textPadding: 0,
 68                 autoSize: {
 69                     enable: true,
 70                     minSize: 14
 71                 },
 72                 data:[
 73                         {
 74                               name: "质量",
 75                               value: 6564,
 76                               itemStyle: createRandomItemStyle()
 77                         },
 78                         {
 79                             name: "稽查",
 80                             value: 4181,
 81                             itemStyle: createRandomItemStyle()
 82                         },
 83                         {
 84                             name: "流程",
 85                             value: 3386,
 86                             itemStyle: createRandomItemStyle()
 87                         },
 88                         {
 89                             name: "核实",
 90                             value: 2655,
 91                             itemStyle: createRandomItemStyle()
 92                         },
 93                         {
 94                             name: "现场",
 95                             value: 2467,
 96                             itemStyle: createRandomItemStyle()
 97                         },
 98                         {
 99                             name: "管理",
100                             value: 2244,
101                             itemStyle: createRandomItemStyle()
102                         },
103                         {
104                             name: "用户",
105                             value: 1898,
106                             itemStyle: createRandomItemStyle()
107                         },
108                         {
109                             name: "系统",
110                             value: 1484,
111                             itemStyle: createRandomItemStyle()
112                         },
113                         {
114                             name: "整改",
115                             value: 1112,
116                             itemStyle: createRandomItemStyle()
117                         },
118                         {
119                             name: "电力系统",
120                             value: 965,
121                             itemStyle: createRandomItemStyle()
122                         },
123                         {
124                             name: "河南供电局",
125                             value: 847,
126                             itemStyle: createRandomItemStyle()
127                         },
128                         {
129                             name: "交变电高压线路",
130                             value: 582,
131                             itemStyle: createRandomItemStyle()
132                         },
133                         {
134                             name: "Lewis Hamilton",
135                             value: 555,
136                             itemStyle: createRandomItemStyle()
137                         },
138                         {
139                             name: "KXAN",
140                             value: 550,
141                             itemStyle: createRandomItemStyle()
142                         },
143                         {
144                             name: "Mary Ellen Mark",
145                             value: 462,
146                             itemStyle: createRandomItemStyle()
147                         },
148                         {
149                             name: "Farrah Abraham",
150                             value: 366,
151                             itemStyle: createRandomItemStyle()
152                         },
153                         {
154                             name: "Rita Ora",
155                             value: 360,
156                             itemStyle: createRandomItemStyle()
157                         },
158                         {
159                             name: "Serena Williams",
160                             value: 282,
161                             itemStyle: createRandomItemStyle()
162                         },
163                         {
164                             name: "NCAA baseball tournament",
165                             value: 273,
166                             itemStyle: createRandomItemStyle()
167                         },
168                         {
169                             name: "Point Break",
170                             value: 265,
171                             itemStyle: createRandomItemStyle()
172                         }
173                     ]
174                 }]
175             };
176             
177     option2 = {
178             title: {
179                 text: '热词分布'
180             },
181             tooltip : {
182                 trigger: 'axis',
183                 axisPointer : {
184                     type: 'shadow'
185                 }
186             },
187             legend: {
188                 data:['稽查工单','隐患问题库','典型案例库'],
189                 axisLabel:{
190                     show:true,
191                     textStyle:{
192                         fontSize:16
193                     }
194                 }
195             },
196             toolbox: {
197                 show : true,
198                 orient : 'vertical',
199                 y : 'center',
200                 feature : {
201                     mark : {show: true},
202                     magicType : {show: true, type: ['line', 'bar', 'stack', 'tiled']},
203                     restore : {show: true},
204                     saveAsImage : {show: true}
205                 }
206             },
207             calculable : true,
208             xAxis : [
209                 {
210                     type : 'category',
211                     data : ["郑州","平顶山","商丘","洛阳","信阳","安阳","驻马店","新乡","开封","许昌","南阳","焦作","漯河","濮阳","周口","鹤壁","三门峡","济源"],
212                     axisLabel:{
213                         show:true,
214                         textStyle:{
215                             fontSize:16
216                         }
217                     }
218                 }
219             ],
220             yAxis : [
221                 {
222                     type : 'value',
223                     splitArea : {show : true},
224                     axisLabel:{
225                         show:true,
226                         textStyle:{
227                             fontSize:16
228                         }
229                     }                
230                 }
231             ],
232             grid: {
233                 x2:40
234             },
235             series : [
236                 {
237                     name:'稽查工单',
238                     type:'bar',
239                     stack: '总量'
240                 },
241                 {
242                     name:'隐患问题库',
243                     type:'bar',
244                     stack: '总量'
245                 },
246                 {
247                     name:'典型案例库',
248                     type:'bar',
249                     stack: '总量',
250                     itemStyle:{
251                         normal:{
252                             label:{
253                                 show:true,
254                                 position:'top',
255                                 formatter:'{c}',
256                                 fontSize:16
257                             }
258                         }
259                     }
260                 }
261             ]
262         };
263     
264     option3 = {
265             title : {
266                 text: '一周内热词变化',
267                 subtext: '测试数据'
268             },
269             tooltip : {
270                 trigger: 'axis'
271             },
272             legend: {
273                 data:['最高热词','最低热词']
274             },
275             toolbox: {
276                 show : true,
277                 feature : {
278                     mark : {show: true},
279                     dataView : {show: true, readOnly: false},
280                     magicType : {show: true, type: ['line', 'bar']},
281                     restore : {show: true},
282                     saveAsImage : {show: true}
283                 }
284             },
285             calculable : true,
286             xAxis : [
287                 {
288                     type : 'category',
289                     boundaryGap : false,
290                     data : ['周一','周二','周三','周四','周五','周六','周日']
291                 }
292             ],
293             yAxis : [
294                 {
295                     type : 'value',
296                     axisLabel : {
297                         formatter: '{value}'
298                     }
299                 }
300             ],
301             series : [
302                 {
303                     name:'最高热词',
304                     type:'line',
305                     data:[114, 131, 125, 213, 412, 143, 310],
306                     markPoint : {
307                         data : [
308                             {type : 'max', name: '最大值'},
309                             {type : 'min', name: '最小值'}
310                         ]
311                     },
312                     markLine : {
313                         data : [
314                             {type : 'average', name: '平均值'}
315                         ]
316                     }
317                 },
318                 {
319                     name:'最低热词',
320                     type:'line',
321                     data:[114, 131, 125, 213, 412, 143, 310],
322                     markPoint : {
323                         data : [
324                             {name : '周最低', value : 114, xAxis: 0, yAxis: 1.5}
325                         ]
326                     },
327                     markLine : {
328                         data : [
329                             {type : 'average', name : '平均值'}
330                         ]
331                     }
332                 }
333             ]
334         };
335     
336     option4 = {
337             title : {
338                 text: '热词层级',
339                 subtext: '测试数据'
340             },
341             tooltip : {
342                 trigger: 'item',
343                 formatter: "{a} <br/>{b} : {c} ({d}%)"
344             },
345             legend: {
346                 orient : 'vertical',
347                 x : '0px',
348                 y : '60px',
349                 data:['直达','邮件营销','联盟广告','视频广告','百度','谷歌','必应','其他']
350             },
351             toolbox: {
352                 show : true,
353                 feature : {
354                     mark : {show: true},
355                     dataView : {show: true, readOnly: false},
356                     magicType : {
357                         show: true, 
358                         type: ['pie', 'funnel']
359                     },
360                     restore : {show: true},
361                     saveAsImage : {show: true}
362                 }
363             },
364             calculable : false,
365             series : [
366                 {
367                     name:'访问来源',
368                     type:'pie',
369                     selectedMode: 'single',
370                     radius : [0, 70],
371                     
372                     // for funnel
373                     x: '20%',
374                     width: '40%',
375                     funnelAlign: 'right',
376                     max: 1548,
377                     
378                     itemStyle : {
379                         normal : {
380                             label : {
381                                 position : 'inner'
382                             },
383                             labelLine : {
384                                 show : false
385                             }
386                         }
387                     },
388                     data:[
389                         {value:335, name:'典型案例库'},
390                         {value:679, name:'隐患问题库'},
391                         {value:1548, name:'稽查工单', selected:true}
392                     ]
393                 },
394                 {
395                     name:'访问来源',
396                     type:'pie',
397                     radius : [100, 140],
398                     
399                     // for funnel
400                     x: '60%',
401                     width: '35%',
402                     funnelAlign: 'left',
403                     max: 1048,
404                     
405                     data:[
406                         {value:335, name:'直达'},
407                         {value:310, name:'邮件营销'},
408                         {value:234, name:'联盟广告'},
409                         {value:135, name:'视频广告'},
410                         {value:1048, name:'百度'},
411                         {value:251, name:'谷歌'},
412                         {value:147, name:'必应'},
413                         {value:102, name:'其他'}
414                     ]
415                 }
416             ]
417         };
418     
419         var series = option["series"];
420         var series2 = option2["series"];
421         var loc = 0;
422         var fun = function (params) { 
423                 var data = 0;
424                 for(var i=0,len = series2.length;i<len;i++){ 
425                     data += series2[i].data[loc];
426                 } 
427                 loc += 1;
428                 return data
429             }
430         //设置每种类别的值
431         series2[0]['data'] = [320, 332, 301, 334, 390, 330, 320, 342, 223, 123, 301, 334, 390, 330, 320, 342, 223, 123]
432         series2[1]['data'] = [320, 332, 301, 334, 390, 330, 320, 342, 223, 123, 301, 334, 390, 330, 320, 342, 223, 123]
433         series2[2]['data'] = [320, 332, 301, 334, 390, 330, 320, 342, 223, 123, 301, 334, 390, 330, 320, 342, 223, 123]
434         
435         //加载页面时候替换最后一个series的formatter
436         series2[series2.length-1]["itemStyle"]["normal"]["label"]["formatter"] = fun 
437 
438         //使用刚指定的配置项和数据显示图表
439         //clearTimeout(loadingTicket);
440         loadingTicket = setTimeout(function (){
441             //myChart.hideLoading();
442             myChart.setOption(option);
443             
444             //myChart2.hideLoading();
445             myChart2.setOption(option2);
446             
447             myChart3.setOption(option3);
448             myChart4.setOption(option4);
449         },300);
450         
451         myChart.connect(myChart2);
452         myChart2.connect(myChart);
453         
454         setTimeout(function (){
455             window.onresize = function () {
456                 myChart.resize();
457                 myChart2.resize();
458             }
459         },200)
460         
461         myChart.on('click', function (params) {
462             //获取随机数
463             var jc = Math.random();
464             var yh = (1 - jc) * Math.random();
465             var dx = (1 - jc) - yh;
466             
467             series2[0]['data'] = [parseInt(params.value * jc), 332, 301, parseInt(params.value * dx), 390, 330, 320, 342, 223, 123, 301, 334, 390, 330, 320, 342, 223, 123]
468             series2[1]['data'] = [parseInt(params.value * yh), 332, 301, 334, 390, 330, parseInt(params.value * jc), 342, 223, 123, 301, 334, 390, 330, 320, 342, 223, 123]
469             series2[2]['data'] = [parseInt(params.value * dx), 332, 301, 334, 390, 330, 320, 342, 223, 123, 301, 334, 390, 330, 320, parseInt(params.value * jc), 223, 123]
470             
471             var loc = 0;
472             var fun = function (params) { 
473                     var data = 0;
474                     for(var i=0,len = series2.length;i<len;i++){ 
475                         data += series2[i].data[loc];// - parseInt(Math.random() * 100)
476                     } 
477                     loc += 1;
478                     return data 
479                 }
480             
481             //加载页面时候替换最后一个series的formatter
482             series2[series2.length-1]["itemStyle"]["normal"]["label"]["formatter"] = fun 
483             myChart2.setOption(option2);
484         }); 
485         
486         myChart2.on('click', function (params){
487             series[series.length-1]['data'][0]['name'] = '资产'
488             series[series.length-1]['data'][0]['value'] = parseInt(Math.random() * 10000)
489             myChart.setOption(option);
490         })
491    </script>
492 </body>
493 </html>

三.效果

 

posted @ 2019-07-16 17:43  云山之巅  阅读(1866)  评论(0编辑  收藏  举报