百度eCharts體驗


 http://echarts.baidu.com/echarts2/doc/start.html

前言 

      從昨天開始給項目里添加一些圖表對比功能,上一個項目里使用的是Highcharts,本打算繼續用Highcharts做的,昨天試了下做出來的效果不太好,主要也是因為看的多了沒什么新鮮感了,於是便嘗試下百度做的ECharts, 總體效果還是不錯的。

 

先來幾張效果圖體驗下

     其中第6張、第七張的效果可以說是在HTML環境下將Canvas發揮到極致,雖然我目前還沒接觸到HTML5和CSS3,深深感到和社會脫節啊,一直做信息化系統開發,整天跟隨業務而變化,有時甚感無聊[隨意吐槽下]。

 

優勢

      1、顏色對比度和鮮明度明顯要比HighCharts要好。也可能是因為我看HighCharts看的多了,有些視覺疲勞了。

      2、支持工具欄。 這個可以說是用了這么多前端插件最意外的一個功能,工具欄中支持【查看數據】、【折現圖】、【堆疊】、【平鋪】、【還原】、【保存為圖片】,幾種格式互相切換起來確實方便不少,尤其是事業單位的員工用戶,閑的沒事干可以點來點去。

      3、模塊化引入和單文件引入。在開發時你可以引用所有echarts開發文件,方便開發和調試。但是項目發布后則可以去除不需要的文件以加快頁面響應速度。

      4、用ECharts自己的話說就是折、柱、散點、K線20萬數據,秒級出圖(估計這一點完爆其他控件)。

      5、拖拽重新計算,可以讓懂數據的、愛好數據的自行進行數據挖掘,重新整合。

缺點

      1、ECharts出生在這個視覺爆炸的年代,竟然不支持3D,這一點百度前端設計團隊需要向HighCharts學習。最起碼像線、柱、堆疊這些老掉牙的圖應該支持3D。

      2、目前還沒研究echarts的源碼,從下載的Demo和我自己Demo的過程中感覺,入門有點迷糊,需要引用zrender,貌似還基於Bootstrap。

      3、API 做的不和諧,以至於我看第一眼還沒搞明白怎么個用法。 就拿單位來說事吧,看了Demo中,幾乎沒有一個tooltip后設置單位的,可見百度有點外行了,匯總型圖表不加單位不是找罵呢? 讓那些愛好數據的老古董怎么看呢?

      以上兩點僅為個人體驗看法,不喜勿噴,如有不同看法,很樂意一起學習討論。

 

Demo步驟

      1、分別下載ECharts 和ZRender。 后者初始化時需要引用。

      2、引用esl.js。esl.js包含和引用了echarts初始化的一些方法。寫法很新穎,第一次這么寫。 

    <script src="/Scripts/echarts_2_0_4/doc/asset/js/esl/esl.js" type="text/javascript"></script>


      4、准備頁面DOM容器,放個div, 寬度設置450就完事了。

      5、為模塊加載器配置echarts路徑和zrender路徑。

1
2
3
4
5
6
7
8
9
10
11
12
require.config({
             packages: [
             {
                 name:  'echarts' ,
                 location:  '/Scripts/echarts_2_0_4/src' ,
                 main:  'echarts'
             }, {
                 name:  'zrender' ,
                 location:  '/Scripts/zrender/src' ,
                 main:  'zrender'
             }]
         });

      6、動態加載echarts為后續回調函數使用做准備。

1
2
3
4
5
6
require(
             [
                 'echarts' ,
                 'echarts/chart/line' ,
                 'echarts/chart/bar'
             ]

      7、編寫回調函數(也就是做你想看到的效果)

           從代碼中可以看出,當我們完成准備工作以后就可以將剩余精力放在option上了,具體option選項就可以對照API來設置了,這點應該和highcharts差別不大,就是不太詳細。

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
option = {
     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' ]},
             restore : {show:  true },
             saveAsImage : {show:  true }
         }
     },
     calculable :  true ,
     xAxis : [
         {
             type :  'category' ,
             boundaryGap :  false ,
             data : [ '周一' , '周二' , '周三' , '周四' , '周五' , '周六' , '周日' ]
         }
     ],
     yAxis : [
         {
             type :  'value' ,
             axisLabel : {
                 formatter:  '{value} °C'
             }
         }
     ],
     series : [
         {
             name: '最高氣溫' ,
             type: 'line' ,
             data:[11, 11, 15, 13, 12, 13, 10],
             markPoint : {
                 data : [
                     {type :  'max' , name:  '最大值' },
                     {type :  'min' , name:  '最小值' }
                 ]
             },
             markLine : {
                 data : [
                     {type :  'average' , name:  '平均值' }
                 ]
             }
         },
         {
             name: '最低氣溫' ,
             type: 'line' ,
             data:[1, -2, 2, 5, 3, 2, 0],
             markPoint : {
                 data : [
                     {name :  '周最低' , value : -2, xAxis: 1, yAxis: -1.5}
                 ]
             },
             markLine : {
                 data : [
                     {type :  'average' , name :  '平均值' }
                 ]
             }
         }
     ]
};
 
 
function  (ec) {
       var  chart = ec.init(document.getElementById( 'main' ));
        chart.setOption(option);
}

 

    總結

     剛開始使用echarts只是為了解決視覺疲勞的問題,目前剛開始弄還有一些細節問題沒有搞定,比如tooltip時單位如何設置、線、柱、堆疊圖如何設置圓角,最起碼官方的demo都是圓角的,還有待於繼續學習和研究。如果有遇到這幾個問題並有解決方案的朋友歡迎發郵件指點我下,謝謝。

     郵件:luck_successful@163.com.

     順便推廣下伙計的討論群,歡迎加入討論[329276418] 群主:wolfy

 

博客地址: http://www.cnblogs.com/sword-successful/
博客版權: 本文以學習、研究和分享為主,歡迎轉載,但必須在文章頁面明顯位置給出原文連接。
如果文中有不妥或者錯誤的地方還望高手的你指出,以免誤人子弟。如果覺得本文對你有所幫助不如【推薦】一下!如果你有更好的建議,不如留言一起討論,共同進步!
再次感謝您耐心的讀完本篇文章。
 
 
 
好文要頂  關注我  收藏該文   
0
1
 
(請您對文章做出評價)
 
« 上一篇: 在線預覽Office文件【效果類似百度文庫】
» 下一篇: 初次體驗百度eCharts遇到的問題和解決方法
posted @  2014-11-07 14:41 garfieldzf 閱讀(6186) 評論(5)  編輯 收藏

 

 
#1樓   2014-11-07 17:49 JerryHeart  
myChart.setTheme(theme);
使用官方的theme就OK了。
#2樓 [ 樓主]  2014-11


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM