echarts 柱狀圖

效果:ajax

圖一:Y軸顯示百分比  柱狀圖定點顯示數量個數json

 

圖二:x軸  相同日期對應的每一個柱子顯示不一樣類型的數量echarts

 

代碼:dom

容器:ide

1 <div id="badQuaAnalyze"></div>
2 <div id="unqualified"></div>

配置項:url

  1         //圖1
  2         var badQuaAnalyze = echarts.init(document.getElementById('badQuaAnalyze'));
  3         //圖2
  4         var unqualified = echarts.init(document.getElementById('unqualified'));
  5         //配置項和數據
  6         //圖1
  7         var badQuaAnalyzeOption = {
  8             backgroundColor: 'rgba(255, 255, 255, 1)',
  9             legend: {
 10                 data:[{name:'數量',icon:'rect'}],
 11                 textStyle:{
 12                     color:'#222222',
 13                     fontSize:12
 14                 },
 15                 y: 'bottom',
 16                 x: 'center' ,
 17             },
 18             tooltip : {
 19                 trigger: 'axis',
 20                 axisPointer : {
 21                     type : 'shadow'
 22                 },
 23                 formatter: function (params) {
 24                     var str = params[0]['axisValue'] + '<br>' + '不合格百分比:'+params[0]['value'] + '%';
 25                     return str;
 26                 }
 27             },
 28             xAxis: [
 29                 {
 30                     type: 'category',
 31                     axisLine:{
 32                         lineStyle:{
 33                             color:'#999999',
 34                             width:1
 35                         }
 36                     },
 37                     data: [],
 38                     axisPointer: {
 39                         type: 'shadow'
 40                     },
 41                     axisLabel:{
 42                         interval:0,
 43                         rotate:0,
 44                         formatter:function(value){
 45 //                            return value.length > 5?value.substring(0,5)+'...':value;
 46                             return value;
 47                         }
 48                     }
 49                 }
 50             ],
 51             yAxis: [
 52                 {
 53                     type: 'value',
 54                     splitLine:{
 55                         show:true  ,
 56                         lineStyle:{
 57                             color:'#021439',
 58                             width: 1
 59                         }
 60                     },
 61                     axisLine:{
 62                         lineStyle:{
 63                             color:'#999999',
 64                             width:1
 65                         }
 66                     },
 67                     axisLabel: {
 68                         show: true,
 69                         interval: 'auto',
 70                         formatter: '{value} %'
 71                     },
 72                     name: '單位(%)',
 73                 }
 74             ],
 75         };
 76         //圖2
 77         var unqualifiedOption = {
 78             backgroundColor: 'rgba(255, 255, 255, 1)',
 79             tooltip : {
 80                 trigger: 'axis',
 81                 axisPointer : {
 82                     type : 'shadow'
 83                 },
 84                 formatter: function (params) {
 85                     var str = params[0]['axisValue'] + '<br>';
 86                     $.each(params,function (i,v) {
 87                         if (v.value) {
 88                             str += v.seriesName + ':' + v.value + '<br>';
 89                         }
 90                     })
 91                     return str;
 92                 }
 93             },
 94             xAxis: [
 95                 {
 96                     type: 'category',
 97                     axisLine:{
 98                         lineStyle:{
 99                             color:'#999999',
100                             width:1
101                         }
102                     },
103                     data: [],
104                     axisPointer: {
105                         type: 'shadow'
106                     },
107                     axisLabel:{
108                         interval:0,
109                         rotate:0,
110                         formatter:function(value){
111 //                            return value.length > 10?value.substring(0,10)+'...':value;
112                             return value;
113                         }
114                     }
115                 }
116             ],
117             yAxis: [
118                 {
119                     type: 'value',
120                     splitLine:{
121                         show:true  ,
122                         lineStyle:{
123                             color:'#021439',
124                             width: 1
125                         }
126                     },
127                     axisLine:{
128                         lineStyle:{
129                             color:'#999999',
130                             width:1
131                         }
132                     },
133                     name: '不合格數量',
134                 }
135             ],
136         };
137         //使用剛指定的配置項和數據顯示圖表。
138         badQuaAnalyze.setOption(badQuaAnalyzeOption);//圖1
139         unqualified.setOption(unqualifiedOption);//圖2
140         getbadQuaAnalyzeData();//圖1
141         getUnqualifiedData();//圖2
142 
143         //獲取圖表數據並插入
144         //圖1
145         function getbadQuaAnalyzeData() {
146 //              $.ajax({
147 //                  url: '',
148 //                  data: {},
149 //                  type: "POST",
150 //                  dataType: 'json',
151 //                  success: function(result){
152             var result = {
153                 meg:'處理成功',
154                 req:true,
155                 rows:[
156                     {
157                         name: "部件1",
158                         num: 55,//數量
159                         percent: 66,//百分比
160                     },
161                     {
162                         name: "部件2",
163                         num: 45,//數量
164                         percent: 56,//百分比
165                     },
166                     {
167                         name: "部件3",
168                         num: 35,//數量
169                         percent: 46,//百分比
170                     },
171                     {
172                         name: "部件4",
173                         num: 75,//數量
174                         percent: 96,//百分比
175                     },
176                     {
177                         name: "部件5",
178                         num: 5,//數量
179                         percent: 10,//百分比
180                     },
181                     {
182                         name: "部件6",
183                         num: 30,//數量
184                         percent: 36,//百分比
185                     },
186                     {
187                         name: "部件7",
188                         num: 40,//數量
189                         percent: 50,//百分比
190                     },
191 
192                 ]
193             }
194             var _name = [], _markPoint = [] , _percent = [];
195             console.log(result);
196             if (result.rows!=null&&result.rows.length > 0) {
197                 $.each(result.rows,function (i,v) {
198                     _name.push(v.name);
199                     _percent.push(v.percent);
200                     _markPoint.push({name : '數量', value : v.num, xAxis: i, yAxis: v.percent})
201                 });
202                 badQuaAnalyze.setOption({
203                     series : [
204                         {
205                             name:'數量',
206                             barWidth: '30%',
207                             type:'bar',
208                             itemStyle : {
209                                 normal : {
210                                     lineStyle:{
211                                         color:'#E09C19'
212                                     },
213                                     color:function(d){return "#"+Math.floor(Math.random()*(256*256*256-1)).toString(16);}
214                                 }
215                             },
216                             data:_percent,
217                             markPoint : {
218                                 data : _markPoint
219                             },
220                         },
221                     ],
222                     xAxis : [
223                         {
224                             data:_name
225                         }
226                     ]
227                 });
228             }
229 //                  }
230 //              });
231         }
232         //圖2
233         function getUnqualifiedData() {
234 //              $.ajax({
235 //                  url: '',
236 //                  data: {},
237 //                  type: "POST",
238 //                  dataType: 'json',
239 //                  success: function(result){
240 
241 
242 
243 
244             //圖標的數據  是根據數據的順序來的   若是須要圖標X軸的時間順序  請返回按時間排序的數據
245             //同一個時間("2017-05-24")  相同名稱的(類型7)   後者的(num)數量會覆蓋前者   並不會累加
246             var result = {
247                 meg:'處理成功',
248                 req:true,
249                 rows:[
250                     {
251                         title:'標題',
252                         time: "2017-05-24",
253                         name:'類型2',
254                         num: 54,//數量
255                     },
256                     {
257                         title:'標題',
258                         time: "2017-05-24",
259                         name:'類型1',
260                         num: 54,//數量
261                     },
262                     {
263                         title:'標題',
264                         time: "2017-05-24",
265                         name:'類型4',
266                         num: 54,//數量
267                     },
268 
269 
270 
271                     {
272                         title:'標題',
273                         time: "2017-05-23",
274                         name:'類型5',
275                         num: 43,//數量
276                     },
277                     {
278                         title:'標題',
279                         time: "2017-05-23",
280                         name:'類型4',
281                         num: 43,//數量
282                     },
283                     {
284                         title:'標題',
285                         time: "2017-05-23",
286                         name:'類型2',
287                         num: 43,//數量
288                     },
289 
290 
291 
292 
293                     {
294                         title:'標題',
295                         time: "2017-05-22",
296                         name:'類型5',
297                         num: 32,//數量
298                     },
299 
300                     {
301                         title:'標題',
302                         time: "2017-05-22",
303                         name:'類型2',
304                         num: 32,//數量
305                     },
306                     {
307                         title:'標題',
308                         time: "2017-05-22",
309                         name:'類型7',
310                         num: 32,//數量
311                     },
312 
313 
314 
315 
316                     {
317                         title:'標題',
318                         time: "2017-05-25",
319                         name:'類型2',
320                         num: 33,//數量
321                     },
322 
323 
324 
325                     {
326                         title:'標題',
327                         time: "2017-05-21",
328                         name:'類型4',
329                         num: 21,//數量
330                     },
331                     {
332                         title:'標題',
333                         time: "2017-05-21",
334                         name:'類型2',
335                         num: 21,//數量
336                     },
337                     {
338                         title:'標題',
339                         time: "2017-05-21",
340                         name:'類型7',
341                         num: 21,//數量
342                     },
343 
344                 ]
345             }
346 
347             var _time = [],_name = [],_series = [];
348             if (result.rows!=null&&result.rows.length > 0) {
349                 $.each(result.rows,function (i,v) {//循環接口返回數據
350                     if ($.inArray(v.time, _time) < 0 ) {//得到X軸橫座標
351                         _time.push(v.time);
352                     }
353                     if ($.inArray(v.name, _name) < 0 ) {//沒有出現過的名字(如:類型7) 建立一條
354                         var current = {
355                             name: v.name,
356                             type: 'bar',
357                             stack: '總量',
358                             label: {
359                                 normal: {
360                                     show: true,
361                                     position: 'inside'
362                                 }
363                             },
364                             data: []
365                         }
366                         _name.push(v.name);//獲取一組圖例
367                         $.each(_time,function (l,m) {
368                             if (m === v.time) {
369                                 current.data[l] = v.num;//確保插入到對應的時間座標處
370                             }
371                         })
372                         _series.push(current)
373                     } else {//重複的名字
374                         $.each(_series,function (j,o) {
375                             if (o.name === v.name) {
376                                 $.each(_time,function (a,b) {
377                                     if (b === v.time) {
378                                         o.data[a] = v.num;//確保插入到對應的時間座標處
379                                     }
380                                 })
381 
382                             }
383                         })
384                     }
385                 });
386                 unqualified.setOption({
387                     legend: {
388                         data: _name
389                     },
390                     title : {
391                         text: result.rows[0].title,
392                         subtext: '',
393                         x:'left'
394                     },
395                     series : _series,
396                     xAxis : [
397                         {
398                             data:_time
399                         }
400                     ]
401                 });
402             }
403 //                  }
404 //              });
405         }
相關文章
相關標籤/搜索