可能是史上最強大的js圖表庫——ECharts帶你入門


  PS:之前的那篇博客Highcharts——讓你的網頁上圖表畫的飛起 ,評論中,花兒笑彎了腰StanZhai 兩位仁兄讓我試試 ECharts ,去主頁看到《Why ECharts ?》簡單了解了一下之后,ECharts很快吸引了我。里面引自馬雲的那句話“互聯網還沒有搞清楚的時候,移動互聯網來了,移動互聯沒有搞清楚的時候,大數據來了”我是第一次聽到,實在震撼了我啊(孤陋寡聞...)。 

  本來沒打算寫什么的。可是作為一個后端開發者,看了半天文檔也迷迷糊糊,查了一堆資料也沒搞懂Echarts那3個導入方法究竟是什么!我真是怒了!就有了下文。

(我相信本文對很多想要做圖表的非前端開發者是有用的。不怪百度,就怪自己沒有js項目經驗。)

 

  這個開源的圖標庫來自百度EFE數據可視化團隊。Highcharts 與之比起來簡直不能看啊,人家做一個圖表都開始往大數據方面思考了,你還在做功能,這產品差距就不是一個數量級的。 這里就不多廢話:

  Echarts 首頁:http://echarts.baidu.com/index.html

  特性:http://echarts.baidu.com/doc/feature.html

  不貼地址了,想要了解的看一下特性就好了,想要入門的繼續往下看。

  ECharts 底層依賴於 Html5 的輕量級的Canvas類庫ZRender ,這也是它的效果這么絢麗的原因。它與 js charts類似,不依賴其他 js 類庫,相比之下 Highcharts還要依賴JQuery等類庫。不過,ECharts也不是什么缺點都沒有的,在線演示平台、文檔,

  初學者可能會被ECharts那個帶你入門的那2個示例弄暈,這里來一個個解釋:

 

  1、AMD規范的加載器——esl.js,這是什么?

  答:關於AMD規范可以參考阮一峰的這篇文章Javascript模塊化編程(二):AMD規范 簡單來說,AMD規范就是異步方式加載模塊的一種方式,避免因為模塊加載過慢而導致瀏覽器“假死”。

  

  2、我們先來看一下echart的大概的包: 

  • echarts.js : 經過壓縮,包含除地圖外的全部圖表
  • echarts-original.js : 未壓縮,可用於調試,包含除地圖外的全部圖表
  • echarts-map.js : 經過壓縮,全圖表,包含world,china以及34個省市級地圖數據
  • echarts-original-map.js : 未壓縮,可用於調試,全圖表,包含world,china以及34個省市級地圖數據

   看得出,這種分類非常有意義。

 

  3、echarts更規范的一點,那就是模塊化加載,需要哪個部分就是用哪個部分。

  關於Echarts的那個入門圖表,我想很多新手跟我一樣的迷惑,require和require.config這個兩個公共方法到底什么來的?

  答:AMD規范的加載器——esl.js的公共方法。(如有錯誤,請指正。)

  

  4、require.config的作用是什么?

  答:為模塊加載器配置echarts的路徑,從當前頁面鏈接到echarts.js,定義所需的圖表路徑。一切盡在echarts-2.0.4文件夾下的src文件夾中。

 

  5、解釋一下require方法?

  答:require方法有2個參數。

  第一個參數為一個數組,數組元素是需要加載的echarts模塊,需要哪個就加載哪個。(經本人測試,這個數組傳入一個空數組都是可以的 !- -)莫非,傳入不正確,會加載全部文件到內存,傳入正確就加載部分模塊到內存?求大神解答!

  第二個參數為一個帶一個參數的方法:function (ec){}, 這個ec對象就是echarts對象了。

 

  OK,基本解釋完了。可能初學者看了Eharts入門實例還是不太理解那Echarts3種導入方式的用法。(入門示例只有2種——標簽式單文件引入和模塊化單文件引入)

  因為入門實例里,js文件指向的是百度服務器上的資源,而我們一般開發,js資源都是放在本地的。

  

  6、來看一下,本地創建3種Echarts導入的例子,下面是那3個示例文件的源碼(官網Demo粗略修改而成):

  (1)、標簽式單文件引入.html:  

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
</head>
<body>
    <!-- 為ECharts准備一個具備大小(寬高)的Dom -->
    <div id="main" style="height:400px"></div>
    <!-- ECharts單文件引入 -->
    <script src="js/echarts.js"></script>
    <script type="text/javascript">
        // 基於准備好的dom,初始化echarts圖表
        var myChart = echarts.init(document.getElementById('main')); 
        
        var option = {
            tooltip: {
                show: true
            },
            legend: {
                data:['銷量']
            },
            xAxis : [
                {
                    type : 'category',
                    data : ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]
                }
            ],
            yAxis : [
                {
                    type : 'value'
                }
            ],
            series : [
                {
                    "name":"銷量",
                    "type":"bar",
                    "data":[5, 20, 40, 10, 10, 20]
                }
            ]
        };

        // 為echarts對象加載數據 
        myChart.setOption(option); 
    </script>
</body>
View Code

   需要注意的是,可以直接引入的單文件只有:

  • echarts-plain.js : 經過壓縮,包含除地圖外的全部圖表
  • echarts-plain-original.js : 未壓縮,可用於調試,包含除地圖外的全部圖表
  • echarts-plain-map.js : 經過壓縮,全圖表,包含world,china以及34個省市級地圖數據
  • echarts-plain-original-map.js : 未壓縮,可用於調試,全圖表,包含world,china以及34個省市級地圖數據

  而除了這些帶“plain”字眼的庫,其他庫都是含echarts這個變量的。導入其他庫,會出現問題:echarts未定義。

 

  (2)、模塊化包引入.html,這個就需要用到2個src文件。

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!--從當前頁面,引入模塊加載器esl.js-->
    <script src="js/esl.js"></script>
</head>
<body>
    <!-- 為ECharts准備一個具備大小(寬高)的Dom -->
    <div id="main" style="height:400px"></div>
    <script type="text/javascript">
        // 為模塊加載器配置echarts的路徑,從當前頁面鏈接到echarts.js,定義所需的圖表路徑
        require.config({
            packages: [
                {
                    name: 'echarts',
                    location: 'js/src',      
                    main: 'echarts'
                },
                {
                    name: 'zrender',
                    location: 'js/zrender/src', 
                    main: 'zrender'
                }
            ]
        });
        
        // 使用
        require(
            [
            ],
            function (ec) {
                // 基於准備好的dom,初始化echarts圖表
                var myChart = ec.init(document.getElementById('main')); 
                
                var option = {
                    tooltip: {
                        show: true
                    },
                    legend: {
                        data:['銷量']
                    },
                    xAxis : [
                        {
                            type : 'category',
                            data : ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]
                        }
                    ],
                    yAxis : [
                        {
                            type : 'value'
                        }
                    ],
                    series : [
                        {
                            "name":"銷量",
                            "type":"bar",
                            "data":[5, 20, 40, 10, 10, 20]
                        }
                    ]
                };
        
                // 為echarts對象加載數據 
                myChart.setOption(option); 
            }
        );
    </script>
</body>
View Code

 

  (3)、模塊化單文件引入.html

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!--從當前頁面,引入模塊加載器esl.js-->
    <script src="js/esl.js"></script>
</head>
<body>
    <!-- 為ECharts准備一個具備大小(寬高)的Dom -->
    <div id="main" style="height:400px"></div>
    <script type="text/javascript">
        // 為模塊加載器配置echarts的路徑,從當前頁面鏈接到echarts.js,定義所需的圖表路徑
        require.config({
            paths:{ 
                'echarts' : './js/echarts',
                'echarts/chart/bar' : './js/echarts'
            }
        });
        
        // 使用
        require(
            [
                'echarts',
                'echarts/chart/bar' // 使用柱狀圖就加載bar模塊,按需加載
            ],
            function (ec) {
                // 基於准備好的dom,初始化echarts圖表
                var myChart = ec.init(document.getElementById('main')); 
                
                var option = {
                    tooltip: {
                        show: true
                    },
                    legend: {
                        data:['銷量']
                    },
                    xAxis : [
                        {
                            type : 'category',
                            data : ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]
                        }
                    ],
                    yAxis : [
                        {
                            type : 'value'
                        }
                    ],
                    series : [
                        {
                            "name":"銷量",
                            "type":"bar",
                            "data":[5, 20, 40, 10, 10, 20]
                        }
                    ]
                };
        
                // 為echarts對象加載數據 
                myChart.setOption(option); 
            }
        );
    </script>
</body>
View Code

 

  2、如果上面的還有不明白的,參考一下我的本地目錄:

  

  js中有如下的文件:

  

  其中,src是echarts-2.0.4文件夾下的src文件夾,zrender里面也有一個src文件夾,是zrender-2.0.4文件夾下面的src文件夾。

   最后吐槽一句:Echarts的這個文檔做的真是太粗略了,實在是朦朦朧朧,含糊不清。跟Highcharts之類的比起來差遠了。想要詳細了解各種特性,多看實例吧。。。

  附上文實例下載鏈接:戳這里

 

  若有什么地方寫的不對,歡迎指正,謝謝!

   轉載請注明出處:http://www.cnblogs.com/zrtqsk/p/4019412.html 謝謝!

 


免責聲明!

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



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