Echarts學習總結(一)-----柱狀圖


簡介

ECharts,縮寫來自Enterprise Charts,商業級數據圖表,基於【HTML5】Canvas (ZRender),純Javascript圖表庫,是百度的一個開源的數據可視化工具,業界給予了很多贊譽,這里不多說,需要了解詳情的同學參見官網。我簡略看了下,最貼切的地方在於本地化支持,比如對於中國地圖的支持。

名詞解釋    

基本名詞

名詞 描述
chart 是指一個完整的圖表,如折線圖,餅圖等“基本”圖表類型或由基本圖表組合而成的“混搭”圖表,可能包括坐標軸、圖例等
axis 直角坐標系中的一個坐標軸,坐標軸可分為類目軸和數值軸
xAxis 直角坐標系中的橫軸,通常並默認為類目軸
yAxis 直角坐標系中的縱軸,通常並默認為數值軸
grid 直角坐標系中除坐標軸外的繪圖網格
legend 圖例,表述數據和圖形的關聯
dataRange 值域選擇,常用於展現地域數據時選擇值域范圍
dataZoom 數據區域縮放,常用於展現大數據時選擇可視范圍
toolbox 輔助工具箱,輔助功能,如添加標線,框選縮放等
tooltip 氣泡提示框,常用於展現更詳細的數據
timeline 時間軸,常用於展現同一組數據在時間維度上的多份數據
series 數據系列,一個圖表可能包含多個系列,每一個系列可能包含多個數據

 圖表名詞

名詞 描述
line 折線圖,堆積折線圖,區域圖,堆積區域圖。
bar 柱形圖(縱向),堆積柱形圖,條形圖(橫向),堆積條形圖。
scatter 散點圖,氣泡圖。散點圖至少需要橫縱兩個數據,更高維度數據加入時可以映射為顏色或大小,當映射到大小時則為氣泡圖
k K線圖,蠟燭圖。常用於展現股票交易數據。
pie 餅圖,圓環圖。餅圖支持兩種(半徑、面積)南丁格爾玫瑰圖模式。
radar 雷達圖,填充雷達圖。高維度數據展現的常用圖表。
chord 和弦圖。常用於展現關系數據,外層為圓環圖,可體現數據占比關系,內層為各個扇形間相互連接的弦,可體現關系數據
force 力導布局圖。常用於展現復雜關系網絡聚類布局。
map 地圖。內置世界地圖、中國及中國34個省市自治區地圖數據、可通過標准GeoJson擴展地圖類型。支持svg擴展類地圖應用,如室內地圖、運動場、物件構造等。

引入Echarts的方式

echarts提供多種引入方式,請根據你的項目類型選擇合適的方式:

1 模塊化包引入
       需要注意的是,包引入提供了開發階段最大的靈活性,但並不適合直接上線,減少請求的文件數量是前端性能優化中最基本但很重要的規則,務必在上線時
文件的連

壓縮。

    require.config({
       packages:[{
		 name:'echarts',
		 location:'../js/echarts',
		 main:'echarts'
	 	},{
		 name:'zrender',
		 location:'../js/zrender',//zrender與echarts,在同一級目錄,模塊化包引入
		 main:'zrender'
		}
	 ]
	 });

首先下載Zrender到本地,和ECharts放在同一目錄下。

 

 

   在echarts/doc/example/www文件中建立一個HTML文件,所使用的js文件都包含在js文件中。    包含echarts.js、echarts-map.js、esl.js三個,其實只用到兩個,echarts-map.js並不用。

2 模塊化單文件引入(推薦
      如果你使用模塊化開發但並沒有自己的打包合並環境,或者說你不希望在你的項目里引入第三方庫的源文件,我們建議你使用單文件引入,同模塊化包引入一樣,你需要熟悉模塊化開發,這種方式只是我們預先幫你把常用圖表組合連接合並在一起,你只需一個符合AMD規范的加載器,同時引入一個echarts相關js即可。如你所發現的,build文件夾下已經生成了不同組合的多個單文件見下,根據你的需求場景只需要使用其中一個即可:

例子:   在這里我們只是用line圖表,其他的不用,如果你不用的話打包在一起就非常浪費,這時候就可以通過build目錄下的build.js文件來構建一個更加貼身的echarts單文件。 總結來說模塊化如何引入ECharts,你都需要如下4步: 1、引入一個模塊加載器,如esl.js或者require.js 2、為ECharts准備一個具備大小(寬高)的Dom(當然可以是動態生成的) 3、為模塊加載器配置echarts的路徑,從當前頁面鏈接到echarts.js,見上述說明 4、動態加載echarts然后在回調函數中開始使用(容我羅嗦一句,當你確保同一頁面已經加載過echarts,再使用時直接require('echarts').init(dom)就行)

首先下載node下載完成后,安裝好node。 打開build文件夾,看到如下文件:

這里我已經建立了一個新的build01.bat 就是單一生成echarts.js

node build.js optimize=true plain=false exclude=map output=echarts.js

當然也可以在終端里通過命令行參數方式運行 node.js構建腳本。

具體語法:

node build.js optimize=true exclude=map,force,line output=echarts.js plain=true  

 

名稱 描述
optimize 是否壓縮, 默認false
exclude 不打包的圖表,多個圖表使用逗號分割, 默認使用所有圖表
output 輸出打包地址,默認為echarts.js
plain 是否打包esl, 打包的話可以直接使用scripts標簽引入, 默認false

config-tpl.js文件修改為:

{  
    // appDir: './',  
    baseUrl: '../src',  
    name: 'echarts',  
    packages: [  
        {  
            name: 'zrender',  
            location: '../../zrender/src',  
            main: 'zrender'  
        },  
        {  
            name: 'echarts',  
            location: '.',  
            main: 'echarts'  
        }  
    ],  
    include:[  
        'echarts/chart/line'  
    ],  
    out: 'echarts.js'  
}  

完成后,將echarts.js拷貝到doc/example/www/js文件中,並將原有的覆蓋

HTML配置如下:

 require.config({  
            paths: {  
                 echarts: '../js/echarts', //echarts.js的路徑
          'echarts/chart/bar' : './js/echarts',       // 把所需圖表指向單文件  
        
   'echarts/chart/line': './js/echarts'  
} });

require.config配置后后就可以通過動態加載使用echarts。

       require(  
		    [  
		        'echarts',  
		        'echarts/chart/line',   // 按需加載所需圖表  
		        'echarts/chart/bar'  
		    ],  
		    function (ec) {  
		        var myChart = ec.init(domMain);  
		        var option = {  
		            ...  
		        }  
		        myChart.setOption(option);  
		    }  
		);

3 標簽式單文件引入
      如果你的項目本身並不是基於模塊化開發的,或者是基於CMD規范(如使用的是seajs),那么引入基於AMD模塊化的echarts可能並不方便,我們建議你采用srcipt標簽

式引入,忘掉require,srcipt標簽引入echarts后將可以直接使用兩個全局的命名空間:echarts,zrender,但是需要注意的是excanvas依賴body標簽插入Canvas節點

判斷Canvas的支持,如果你把引用echarts的script標簽放置head內在IE8-的瀏覽器中會出現報錯,解決的辦法就是把標簽移動到body內(后)。

標簽式引入環境中,常用模塊的引用可通過命名空間直取,同模塊化下的路徑結構,如:
echarts.config = require('echarts/config'), zrender.tool.color = require('zrender/tool/color')

可以直接引入的單文件如下:

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

<script src="example/www2/js/echarts-plain.js"></script>  
<script>  
    var myChart = echarts.init(domMain);  
    var option = {  
        ...  
    }  
    myChart.setOption(option);  
</script>  

牛刀小試----代碼解析柱狀圖

今天在學習Echarts練習時,總是在路徑的配置上出現錯誤,作為入門,總結一下,在此分享給大家,希望有用。

ECharts主頁:  http://echarts.baidu.com/index.html

ECharts-2.2.0下載地址:  http://echarts.baidu.com/build/echarts-2.2.0.zip 

ECharts官方實例:  http://echarts.baidu.com/doc/example.html

ECharts官方API文檔:  http://echarts.baidu.com/doc/doc.html

需要注意的是ECharts內部也是依賴於另一個插件的叫ZRender,當然對於大部分圖表而言不需要ZRender的,但是對於地圖控件及其他復雜的呈現控件而已都是需要ZRender的。為了避免不要的問題出現,建議大家在下載ECharts時同時也要下載ZRender。

ZRender下載地址:http://ecomfe.github.io/zrender/index.html

1、項目結構

 

js文件夾: 下載了ECharts之后,解壓縮,如解壓后的根目錄是echarts-2.2.0,則到echarts-2.2.0\doc\example\www路徑下,把里面的js文件夾直接復制粘貼到項目的 WebRoot根目錄下即可。ZRender插件放在與ECharts的同一目錄下,即zrender-master\src

這里有以下幾點需要說明:

l  所有的跟ECharts有關的文件全部都在echarts文件夾下

l  echarts文件夾的內容分為兩部分

1)       一部分是以echarts開頭的js文件,這些文件全部來自於1.中的ECharts文件目錄中的js文件夾下的文件,也就是1.中的圖中紅框標注的js下的文件。如下:

 

2)       另一部分是一個名為zrender的文件夾,這里需要特別注意的是該文件夾的命名必須為zrender,因為在echarts的js文件中對zrender的引用都是以zrender為根目錄的,zrender文件夾的內容即為1.中zrender文件目錄中的src文件夾下的內容,如下:

 

dem1:index.html:在WebRoot根目錄下新建index.html

<!DOCTYPE html>
<html>
  <head>
    <title>ECharts</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
  </head>
<body>
    <!-- 為ECharts准備一個具備大小(寬高)的Dom -->
    <div id="main" style="height:400px"></div>
    <!-- ECharts單文件引入 -->
    <script src="js/echarts.js"></script>
    <script type="text/javascript">
        // 路徑配置
        require.config({
            paths: {
                echarts: './js'
            }
        });
        
        // 使用
        require(
            [
                'echarts',
                'echarts/chart/bar', // 使用柱狀圖就加載bar模塊,按需加載
                'echarts/chart/line'
            ],
            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]
                        },//折線圖         
	                    {         
	                    	 name:"銷量",    
	                    	 type:"line",      
	                    	 data:[5, 20, 40, 10, 10, 20],
	                    	  //繪制平均線       
	                    	 markLine : {         
	                    	      data : [            
	                    	          {
	                    	          type : 'average',
	                    	          name: '平均值'
	                    	          }    
	                    	      ]  
	                    	 }, 
	                    	  //繪制最高最低點          
	                    	 markPoint : {     
	                    	       data : [   
	                    	               {
	                    	               type : 'max', 
	                    	               name: '最大值'
	                    	               },          
	                    	               {
	                    	               type : 'min', 
	                    	               name: '最小值'
	                    	               }           
	                    	        ]         
	                    	  }            	 
	                    }
	                  ]
	                };
        
                // 為echarts對象加載數據 
                myChart.setOption(option); 
            }
        );
    </script>
</body>

</html>

 

dem2:echarts.jsp:同上

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>ECharts-基本線性圖及其配置要求</title>
</head>
<body>
    <!--Step:1 Prepare a dom for ECharts which (must) has size (width & hight)-->
    <!--Step:1 為ECharts准備一個具備大小(寬高)的Dom-->
    <div id="main" style="height:500px;border:1px solid #ccc;padding:10px;"></div>
    <div id="mainMap" style="width:500px;height:500px;border:1px solid #ccc;padding:10px;"></div>
    
    <!--Step:2 Import echarts.js-->
    <!--Step:2 引入echarts.js-->
    <script src="js/echarts.js"></script>
    
    <script type="text/javascript">
    // Step:3 conifg ECharts's path, link to echarts.js from current page.
    // Step:3 為模塊加載器配置echarts的路徑,從當前頁面鏈接到echarts.js,定義所需圖表路徑
    require.config({
        paths: {
            echarts: './js'		//echarts.js所在的路徑 
        }
    });
    
    // Step:4 require echarts and use it in the callback.
    // Step:4 動態加載echarts然后在回調函數中開始使用,注意保持按需加載結構定義圖表路徑
    require(
        [
            'echarts',
            'echarts/chart/bar',
            'echarts/chart/line',
            'echarts/chart/map'
        ],
        function (ec) {//渲染ECharts圖表  ,可單獨寫出來作為回調函數
            //--- 折柱 ---
            //圖表渲染的容器對象  
	        var chartContainer = document.getElementById("main");  //""、''這里均可以
            //加載圖表  
            var myChart = ec.init(chartContainer);  
            myChart.setOption({
                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 : [
                    {
                    	name : '月份',
                        type : 'category',
                        data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
                    }
                ],
                yAxis : [
                    {
                    	name : '數值',
                        type : 'value',
                        splitArea : {show : true}
                    }
                ],
                series : [
                    {
                        name:'蒸發量',
                        type:'bar',
                        data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
                    },
                    {
                        name:'降水量',
                        type:'bar',
                        data:[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
                    }
                ]
            });
            
            // --- 地圖 ---
            var myChart2 = ec.init(document.getElementById('mainMap'));
            var option = {
                tooltip : {
                    trigger: 'item',
                    formatter: '{b}'
                },
                series : [
                    {
                        name: '中國',
                        type: 'map',
                        mapType: 'china',
                        selectedMode : 'multiple',
                        itemStyle:{
                            normal:{label:{show:true}},
                            emphasis:{label:{show:true}}
                        },
                        data:[
                            {name:'廣東',selected:true}
                        ]
                    }
                ]
            };
            myChart2.setOption(option); // 為echarts對象加載數據 
            
        }
    );
    </script>
</body>
</html>

完成以上的步驟后,把項目發布到服務器,在瀏覽器上訪問echarts.jsp(由於本實例還沒有跟后台進行交互,只是先做一個前台用法介紹,所以可以把echart.jsp直接修改成echarts.html文件,把它跟js文件夾放在同一級目錄下,然后直接用瀏覽器打開echarts.html),即可看到效果。好了,這次總結就先到這里!

 


免責聲明!

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



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