ECharts使用指南

簡介:

?ECharts是百度開發的一個國內比較常用的網頁圖表工具,也算是它旗下不可多得的優秀工具之一。如果你看過其它的js圖表工具就可以知道這玩意的強大之處了,相比其它xxChart,ECharts提供了基本上最完善的圖表類型模板,api接口和配置項,其次,它用起來比較方便,現成的模板非常易于使用,如果不需要一些高級特性,那么只需要一點前端知識就能完成數據的可視化。

參考:

html及javascript
如果你完全不了解html和javascript的相關內容,有那么一些網站可以參考:
?W3Cschool
?廖雪峰的官網
這些或許并不是最好的參考,但可以作為方便的隨時在手邊的教程來使用。

那就開始吧:

第一步,引入ECharts:

?echars的引入十分簡單,只需要在html中嵌入即可:

<!DOCTYPE html>
<html>
<head>
    <script src="echarts.min.js"></script>
</head>
</html>

echarts.min.js從官網下載
此時echarts.min.js保存在html文件同目錄下
如果不想在本地保存echart.js文件,可以采用cdn引入:

<script src="echarts.min.js"></script>

改為

<script src="https://cdn.bootcss.com/echarts/4.1.0.rc2/echarts.min.js"></script>

之后就可以開始進入echarts的世界了

第二步,生成echarts對象:

?要創建圖表首先要給圖表一個安置的空間,所以可以在body內嵌入一個空的<div>標簽,賦值一個id,以用來存放圖表對象,當然如果有多個圖表那可以創建多個標簽。參考官方的初始化方法,使用echarts.init(node)創建echarts對象,完整代碼如下:

<!DOCTYPE html>
<html>
<head>
    <script src="echarts.min.js"></script>
</head>
<body>
    <div id="container" style="height: 100%"></div>
<script>
    var dom = document.getElementById("container");
    var myChart = echarts.init(dom);
</script>
</body>
</html>

這個myChart就是重點關注對象,之后的幾乎所有圖表方法都跟這玩意有關。

第三步,設置配置項

?echarts的需要通過一個option對象來進行配置,詳細配置項見官網說明文檔
?以折線圖為例,option的形式類似于這樣:

折線圖

option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line'
    }]
};

其中series是數據系列,可以有多個,在這個折線圖中只設置了一個
至于xAxis和yAxis是echarts提供的折線圖配置項,要知道所有的可設置項可查看官方文檔

第四步,載入option:

?如果要載入option,只需要調用setOption()就好了

myChart.setOption(option, true);

其中第二個參數為[notMerge],當設置為false時,如果更新數據將會合并新舊數據

最后上一個完整版:
<!DOCTYPE html>
<html style="height: 100%">
   <head>
       <meta charset="utf-8">
   </head>
   <body style="height: 100%; margin: 0">
       <div id="container" style="height: 100%"></div>
       <script type="text/javascript" src="echarts.min.js"></script>
var dom = document.getElementById("container");
var myChart = echarts.init(dom);
option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line'
    }]
};
myChart.setOption(option, true);

       </script>
   </body>
</html>


?

常用的option配置項和對象方法
常用的mychart對象方法
myChart.showLoading(LoadingOption);
myChart.hideLoading();

添加showLoading()到加載數據之前可以顯示一個Loading的界面,防止加載時間過長,hideLoading()清除加載頁面

mychart.getOption();

獲取option對象的克隆版本

mychart.dispose()
mychart.clear();

前者為釋放圖表,釋放后不可在使用
后者為清空圖表內容,清空后可再添加內容
?

常用的配置項
圖例
legend: [{
            data: categories.map(function (a) {
                return a.name;
            }),
            selected: {
                '系列1': true,
                // 不選中'系列2'
                '系列2': false
            }
        }],

因為原始數據不一定符合要求,所以data數據常常使用map和回調函數返回一個字符串數組

縮放
    dataZoom: [
        { // 第一個 dataZoom 組件
            radiusAxisIndex: [0, 2] // 表示這個 dataZoom 組件控制 第一個 和 第三個 radiusAxis
        }]

dataZoom控制數據的縮放

以及最重要的
    series:[{...},{...}]

series中包含了大量已有圖表類型的配置項,具體內容參考配置項文檔

?

異步加載數據

模板中常用的異步加載數據類型有json和圖表類型用的gexf,有關gexf格式的詳情可以看這里

為了方便起見,異步加載數據首先導入Jquery

<script type="text/javascript" src="jquery.js"></script>

加載gexf文件要先加載echarts的dataTool庫

<script type="text/javascript" src="dataTool.min.js"></script>
$.get('data.gexf',function(xml){
    var graph = echarts.dataTool.gexf.parse(xml);//通過dataTool解析gexf
}),

其中graph對象帶有gexf中的節點信息


graph

于是調用起來就非常方便了:
對于關系圖,我們可以這樣

series : [
            {
                name: 'graph',
                type: 'graph',
                layout: 'none',
                data: graph.nodes,
                links: graph.links
            }

加載json文件同理:

$.get('data.json',function(data){
    data.nodes;//節點
    data.links; //邊
})
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,732評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,214評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,781評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,588評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,315評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,699評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,698評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,882評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,441評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,189評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,388評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,933評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,613評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,023評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,310評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,112評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,334評論 2 377

推薦閱讀更多精彩內容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網絡請求組件 FMDB本地數據庫組件 SD...
    陽明先生_X自主閱讀 16,002評論 3 119
  • 經濟制造的風向標,淘寶拍賣 信息全流通的年代就是,隨時隨地的可以知道各種渠道信息。而且可以從價格上看出各種問題。美...
    瑾渝閱讀 122評論 0 0
  • [成為配得上希望的那個人2017.05.15留言] 今天的話題,其實是怎樣遇到貴人的升級版,怎樣呵護希望。道理是一...
    早知今日閱讀 338評論 0 1
  • 大半夜睡不著,自制暑假攻略一則,以此消遣時光。 一、暑假必做——旅行。和男票商量好了,暑假去銀川影視基地,完成上一...
    親愛的自己呀閱讀 425評論 0 0
  • 行之_cd閱讀 129評論 0 0