ECharts实操手册
內容摘要
ECharts 的基本使用
ECharts常用圖表
直角坐標系常見配置
ECharts配置項小結
ECharts高級
1. ECharts基本使用
1.1 ECharts介紹
ECharts 能夠做出各種各樣漂亮的圖表,它能滿足絕大多數可視化圖表的實現.它的兼容性強, 使用方便, 功能強大, 是實現數據可視化的最佳選擇之一, 更多特點和介紹可以查閱官網地址:ECharts官網
1.2 ECharts的快速上手
ECharts 的入門使用特別簡單, 5分鐘就能夠上手.。
- 步驟1:引入 echarts.js 文件(echarts是一個 js 的庫,當然得先引入這個庫文件)
- 步驟2:準備一個呈現圖表的盒子(盒子必須具備寬高)
- 步驟3:初始化 echarts 實例對象(在這個步驟中, 需要指明圖表最終顯示在哪里的DOM元素)
- 步驟4:準備配置項(這步很關鍵,我們最終的效果,到底是顯示餅圖還是折線圖,基本上都是由配置項決定的)
- 步驟5:將配置項設置給 echarts 實例對象
呈現
總結:通過簡單的5個步驟, 就能夠把一個簡單的柱狀圖給顯示在網頁中了.這幾個步驟中, 步驟4最重要,一個圖表最終呈現什么樣子,完全取決于這個配置項.所以對于不同的圖表, 除了配置項會發生改變之外,其他的代碼 都是固定不變的.
1.3 相關配置項
-
xAxis
直角坐標系 中的x 軸, 如果 type 屬性的值為 category ,那么需要配置 data 數據, 代表在 x 軸的呈現。 -
yAxis
直角坐標系 中的 y 軸, 如果 type 屬性配置為 value , 那么無需配置 data , 此時 y 軸會自動去series 下找數據進行圖表的繪制。 -
series
系列列表。每個系列通過 type 決定自己的圖表類型, data 來設置每個系列的數據
總結:配置項都是以鍵值對的形式存在, 并且配置項有很多, ECharts 的學習大多是針對于這些配置項的, 對于
配置項的使用及學習,可多參考官方配置項文檔:ECharts配置項
2. ECharts常用圖表
2.1 柱狀圖
柱狀圖特點:柱狀圖描述的是分類數據,呈現的是每一個分類中有多少?, 圖表所表達出來的含義在于不同類別數據的排名\對比情況
實現步驟
- 步驟1 ECharts 最基本的代碼結構
- 步驟2 準備x軸的數據
- 步驟3 準備y 軸的數據
- 步驟4 準備 option , 將 series 中的 type 的值設置為: bar
注意:坐標軸 xAxis 或者 yAxis中的配置, type 的值主要有兩種:category 和 value, 如果 type屬性的值為category ,那么需要配置 data數據, 代表在x 軸的呈現. 如果 type 屬性配置為 value,那么無需配置 data , 此時 y 軸會自動去 series 下找數據進行圖表的繪制
2.1.1 柱狀圖的常見效果
最大值\最小值 markPoint(哪組數據需要標記就在哪組數據下寫,無需在創造對象)
series: [{ ......markPoint: { data: [ { type: 'max', name: '最大值' },{ type: 'min', name: '最小值' } ] } } ]平均值 markLine
series: [ { ...... markLine: { data: [ { type: 'average', name: '平均值' } ] } } ]數值顯示 label
series: [ { ...... label: { show: true, // 是否可見 rotate: 60 // 旋轉角度 } } ]柱寬度 barWidth
series: [ {...... barWidth: '30%' // 柱的寬度 } ]橫向柱狀圖(所謂的橫向柱狀圖, 只需要讓x軸的角色和y軸的角色互換一下即可. 即 xAxis 的 type 設置為value , yAxis 的 type 設置為 category , 并且設置 data 即可)
var option = {xAxis: {type: 'value'},yAxis: {type: 'category',data: xDataArr},series: [{type: 'bar',data: yDataArr}]}2.1.2 通用配置
使用 ECharts 繪制出來的圖表, 都天生就自帶一些功能, 這些功能是每一個圖表都具備的, 我們可以通過配置, 對這些功能進行設置.
觸發類型: trigger
可選值有item\axis觸發時機: triggerOn
可選值有 mouseOver\click格式化顯示: formatter(分為字符串模板、回調函數 官方文檔:formatter)
var option = {tooltip: {trigger: 'item',triggerOn: 'click',formatter: '{b}:{c}'}}// 這個{b} 和 {c} 所代表的含義不需要去記, 在官方文檔中有詳細的描述 var option = {tooltip: {trigger: 'item',triggerOn: 'click',formatter: function(arg) {return arg.name + ':' + arg.data}}}toolbox 是 ECharts 提供的工具欄, 內置有 導出圖片,數據視圖, 重置, 數據區域縮放, 動態類型切換五個工具
注意:工具欄的按鈕是配置在 feature 的節點之下
注意:legend 中的 data 是一個數組;legend 中的 data 的值需要和 series 數組中某組數據的 name 值一致。
var option = {legend: {data: ['語文', '數學']},xAxis: {type: 'category',data: ['張三', '李四', '王五', '閏土', '小明', '茅臺', '二妞', '大強']},yAxis: {type: 'value'},series: [{name: '語文',type: 'bar',data: [88, 92, 63, 77, 94, 80, 72, 86]}, {name: '數學',type: 'bar',data: [93, 60, 61, 82, 95, 70, 71, 86]}]}2.2 折線圖
折線圖特點:折線圖更多的使用來呈現數據隨時間的『變化趨勢』
實現步驟
- 步驟1 ECharts 最基本的代碼結構
- 步驟2 準備x軸的數據
- 步驟3 準備y 軸的數據
- 步驟4 準備 option , 將 series 中的 type 的值設置為: line
呈現
2.2.1 折線圖的常見效果
最大值\最小值 markPoint
var option = {series: [{......markPoint: {data: [{type: 'max',name: '最大值'}, {type: 'min',name: '最小值'}]}}]}平均值 markLine
var option = {series: [{......markLine: {data: [{type: 'average',name: '平均值'}]}}]}標注區間 markArea
var option = {series: [{......markArea: {data: [[{xAxis: '1月'}, {xAxis: '2月'}],[{xAxis: '7月'}, {xAxis: '8月'}]]}}]}平滑線條 smooth
var option = {series: [{......smooth: true}]}線條樣式 lineStyle
var option = {series: [{......,smooth: true,lineStyle: {color: 'green',type: 'dashed' // 可選值還有 dotted solid }}]}注意:第二條線在第一條線的基礎之上進行繪制. 基于前一個圖表進行堆疊
2.3 散點圖
散點圖的特點:散點圖可以幫助我們推斷出不同維度數據之間的相關性, 比如,看得出身高和體重是否正相關。也經常用在地圖的標注上
實現步驟
- 步驟1 ECharts 最基本的代碼結構
- 步驟2 準備 x 軸和 y 軸 的數據
- 步驟3 準備配置項(xAxis 和 yAxis 的 type 都要設置為 value ;在 series 下設置 type:scatter)
- 步驟4 調整配置項, 脫離0值比例
呈現
2.3.1 散點圖的常見效果
symbolSize 控制散點的大小
itemStyle.color 控制散點的顏色
這兩個配置項都支持固定值的寫法, 也支持回調函數的寫法
固定值寫法:
var option = {series: [{type: 'scatter',data: axisData,symbolSize: 25,itemStyle: {color: 'green',}}]}回調函數寫法:
var option = {series: [{type: 'scatter',data: axisData,symbolSize: function(arg) {var weight = arg[1]var height = arg[0] / 100 // BMI > 28 則代表肥胖, 肥胖的人用大的散點標識, 正常的人用小散點標識 // BMI: 體重/ 身高*身高 kg m var bmi = weight / (height * height)if (bmi > 28) {return 20}return 5},itemStyle: {color: function(arg) {var weight = arg.data[1]var height = arg.data[0] / 100var bmi = weight / (height * height)if (bmi > 28) {return 'red'}return 'green'}}}]}type:effectScatter(將 type 的值從 scatter 設置為 effectScatter 就能夠產生漣漪動畫的效果)
rippleEffect(rippleEffect 可以配置漣漪動畫的大小)
showEffectOn
showEffectOn 可以控制漣漪動畫在什么時候產生, 它的可選值有兩個: render 和 emphasis
render代表界面渲染完成就開始漣漪動畫
emphasis 代表鼠標移過某個散點的時候, 該散點開始漣漪動畫
2.4 直角坐標系常見配置
直角坐標系的圖表指的是帶有x軸和y軸的圖表, 常見的直角坐標系的圖表有: 柱狀圖 折線圖 散點圖。針對于直角坐標系的圖表, 有一些通用的配置
顯示 grid show: true
grid 的邊框 borderWidth : 10
grid 的位置和大小 left top right bottom width height
坐標軸類型type
value : 數值軸, 自動會從目標數據中讀取數據
category: 類目軸, 該類型必須通過 data 設置類目數據
坐標軸位置
xAxis: 可取值為 top 或者 bottom
yAxis: 可取值為 left 或者 right
dataZoom 用于區域縮放, 對數據范圍過濾, x軸和y軸都可以擁有, dataZoom 是一個數組, 意味著
可以配置多個區域縮放器
區域縮放類型 type
slider: 滑塊
inside: 內置, 依靠鼠標滾輪或者雙指縮放
產生作用的軸
xAxisIndex :設置縮放組件控制的是哪個 x 軸, 一般寫0即可
yAxisIndex:設置縮放組件控制的是哪個 y 軸, 一般寫0即可
指明初始狀態的縮放情況
start : 數據窗口范圍的起始百分比
end : 數據窗口范圍的結束百分比
注意:針對于非直角坐標系圖表, 比如餅圖 地圖 等, 以上三個配置可能就不會生效了
2.5 餅圖
餅圖的特點:餅圖可以很好地幫助用戶快速了解不同分類的數據的占比情況
實現步驟
- 步驟1 ECharts 最基本的代碼結構
- 步驟2 準備數據
- 步驟3 準備配置項 在series 下設置 type:pie
呈現
注意:餅圖的數據是由 name 和 value 組成的對象所形成的數組。餅圖無須配置 xAxis 和 yAxis
2.5.1 餅圖的常見效果
label.show : 顯示文字
label.formatter : 格式化文字
roseType:‘radius’
selectedMode: ‘multiple’
選中模式,表示是否支持多個選中,默認關閉,支持布爾值和字符串,字符串取值可選 ‘single’ , ‘multiple’ ,分別表示單選還是多選
selectedOffset: 30
選中扇區的偏移距離
radius
餅圖的半徑。可以為如下類型:
number:直接指定外半徑值。
string:例如, ‘20%’ ,表示外半徑為可視區尺寸(容器高寬中較小一項)的 20% 長度。
Array. :數組的第一項是內半徑,第二項是外半徑, 通過 Array , 可以將餅圖設置為圓環圖
呈現
2.6 地圖
地圖的特點:地圖主要可以幫助我們從宏觀的角度快速看出不同地理位置上數據的差異
2.6.1 地圖圖表的使用方式
百度地圖API : 使用百度地圖的 api , 它能夠在線聯網展示地圖, 百度地圖需要申請
矢量地圖 : 可以離線展示地圖, 需要開發者準備矢量地圖數據(地圖數據可以是json數據,也可以是js數據)
2.6.2 矢量地圖的實現步驟
- 步驟1 ECharts 最基本的代碼結構
- 步驟2 準備中國的矢量 json 文件, 放到 json/map/ 目錄之下(假設)
- 步驟3 使用 Ajax 獲取 china.json
- 步驟4 在Ajax的回調函數中, 往 echarts 全局對象注冊地圖的 json 數據
- 步驟5 獲取完數據之后, 需要配置 geo 節點, 再次的 setOption
注意:由于在代碼中使用了 Ajax , 所以, 關于此文件的打開, 不能以 file 的協議打開, 應該將其置于 HTTP 的服務之下方可正常展示地圖
2.6.3 地圖的常見配置
2.6.4 地圖的常見效果
當點擊某個省份時顯示該省份的矢量地圖,注冊地圖跟上述步驟一致,只是給ECharts實例添加點擊事件
不同城市顏色不同
- 顯示基本的中國地圖- 準備好城市數據, 并且將數據設置給 series- 將 series 下的數據和 geo 關聯起來- 結合 visualMap 配合使用visualMap 是視覺映射組件, 和之前區域縮放 dataZoom 很類似, 可以做數據的過濾. 只不過dataZoom 主要使用在直角坐標系的圖表, 而 visualMap 主要使用在地圖或者餅圖中
var option = {geo: {type: 'map',map: 'chinaMap',roam: true,label: {show: true}},series: [{data: airData,geoIndex: 0,type: 'map'}],visualMap: {min: 0, // 最小值 max: 300, // 最大值 inRange: {color: ['white', 'red'] // 顏色的范圍 },calculable: true // 是否顯示拖拽用的手柄(手柄能拖拽調整選中范圍) }}地圖和散點圖結合
- 給 series 這個數組下增加新的對象- 準備好散點數據,設置給新對象的 data- 配置新對象的 type type:effectScatter、讓散點圖使用地圖坐標系統 coordinateSystem: 'geo'、- 讓漣漪的效果更加明顯 rippleEffect: { scale: 10 }2.7 雷達圖
雷達圖的特點:雷達圖可以用來分析多個維度的數據與標準數據的對比情況
實現步驟
- 步驟1 ECharts 最基本的代碼結構
- 步驟2 定義各個維度的最大值
- 步驟3 準備具體產品的數據
- 步驟4 在 series 下設置 type:radar
2.7.1 雷達圖的常見效果
2.8 儀表盤圖
儀表盤的特點:儀表盤可以更直觀的表現出某個指標的進度或實際情況
實現步驟
- 步驟1 ECharts 最基本的代碼結構
- 步驟2: 準備數據, 設置給 series 下的 data data:[97]
- 步驟3: 在 series 下設置 type:gauge
2.8.1 儀表盤的常見效果
3. ECharts配置項小結
3.1 柱狀圖 bar
| 圖表類型 | x軸 | y軸 | 最大值\最小 值 | 平均值 | 顯示文本 | 柱寬度 |
3.2 折線圖 line
| 圖表類型 | x軸 | y軸 | 最大值\最小 值 | 平均值 | 標注區域 | 平滑線 | 線條風格 | 風格x軸 | 緊挨邊緣 | 脫離0值比例 |
3.3 散點圖 scatter
| 圖表類型 | x軸 | y軸 | 散點大小 | 散點樣式 | 顯示時機 | 漣漪效果 | 脫離0值比例 |
3.4 餅圖 pie
| 圖表類型 | 顯示文本 | 半徑 | 餅圖類型 | 是否多選 | 選中扇區偏移量 |
3.5 地圖 map
| 圖表類型 | 地理坐標系組件 | 指明地圖數據 | 開啟鼠標拖動和縮放 | 平均值 | 圖表的中心點 | 是否顯示地區 | 指明關聯的geo組 件 | 視覺映射組件 | 使用坐標系統 |
3.6 雷達圖 radar
| 圖表類型 | 雷達圖組件 | 雷達圖的指示器 | 文字 | 區域顏色 | 雷達圖形狀 |
3.7 儀表盤 gauge
| 圖表類型 | 最大值 | 最小值 | 指針樣式 |
3.8 直角坐標系配置
| 是否可見 | 邊框寬度 | 邊框顏色 | 左邊 | 頂部 | 右邊 | 底部 | 寬度 | 高度 |
| 軸類型 | 數據 | 顯示位置 |
| 縮放塊類型 | x軸索引 | y軸索引 | 初始值 | 結束值 |
3.9 通用配置
| 文字樣式 | 邊框寬度 | 邊框顏色 | 邊框圓角 | 左邊 | 頂部 | 右邊 | 底部 |
| 觸發類型 | 觸發時機 | 內容自定義 |
| 保存圖片 | 數據視圖 | 重置 | 縮放 | 圖表轉換 |
| 圖例數據, 需要和series數組中某組數據的name值一致 |
4. ECharts高級
4.1 顯示相關
4.1.1 主題
ECharts 中默認內置了兩套主題: light、dark在初始化對象方法 init 中可以指明
var chart = echarts.init(dom, 'light') var chart = echarts.init(dom, 'dark')自定義主題
- 在主題編輯器中編輯主題(可以自定義很多內容):[去編輯](https://echarts.apache.org/zh/theme-builder.html)- 下載主題, 是一個 js 文件- 引入主題 js 文件- 在 init 方法中使用主題4.1.2 調色盤
它是一組顏色,圖形、系列會自動從其中選擇顏色, 不斷的循環從頭取到尾, 再從頭取到尾, 如此往復.
注意:如果全局的調色盤和局部的調色盤都設置了, 局部調色盤會產生效果, 這里面遵循的是就近原則
線性漸變
線性漸變的類型為 linear , 他需要配置線性的方向, 通過 x, y, x2, y2 即可進行配置。
x , y , x2 , y2 ,范圍從 0 - 1,相當于在圖形包圍盒中的百分比,如果 global 為 true ,則該四個值是絕對的像素位置 在下述代碼中的0 0 0 1意味著從上往下進行漸變
徑向漸變
徑向漸變的類型為 radial , 他需要配置徑向的方向, 通過x , y , r 即可進行配置前三個參數分別是圓心 x , y 和半徑,取值同線性漸變
在下述代碼中的 0.5 0.5 0.5 意味著從柱的重點點, 向外徑向擴散半徑為寬度一半的圓
4.1.3 樣式
itemStyle textStyle lineStyle areaStyle label
data: [{value: 11231,name: "淘寶",itemStyle: {color: 'black'}}] title: {text: '我是標題',textStyle: {color: 'red'}}label: {color: 'green'}注意:這些樣式一般都可以設置顏色或者背景或者字體等樣式, 他們會覆蓋主題中的樣式
圖表中, 其實有很多元素都是有兩種狀態的, 一種是默認狀態, 另外一種就是鼠標滑過或者點擊形成的高亮狀態. 而高亮樣式是針對于元素的高亮狀態設定的樣式(,在 emphasis 中包裹原先的 itemStyle)
series: [{type: 'pie',label: {color: 'green'},emphasis: {label: {color: 'red'},},data: [{value: 11231,name: "淘寶",itemStyle: {color: 'black'},emphasis: {itemStyle: {color: 'blue'},}}]}]4.1.4 自適應
實現步驟
- 步驟1: 監聽窗口大小變化事件
- 步驟2: 在事件處理函數中調用 ECharts 實例對象的 resize 即可
4.2 動畫的使用
ECharts 已經內置好了加載數據的動畫, 我們只需要在合適的時機顯示或者隱藏即可
4.2.1 加載動畫
4.2.2 增量動畫
所有數據的更新都通過 setOption 實現, 我們不用考慮數據到底產生了那些變化, ECharts 會找到兩組數據之間的差異然后通過合適的動畫去表現數據的變化。
4.2.3 動畫的配置
單種形式的元素數量大于這個閾值時會關閉動畫
4.3 交互API
4.3.1 全局echarts 對象
全局 echarts 對象是引入 echarts.js 文件之后就可以直接使用的
- 一個頁面中可以有多個獨立的圖表
- 每一個圖表對應一個 ECharts 實例對象
- connect 可以實現多圖關聯,傳入聯動目標為 EChart 實例,支持數組
4.3.2 echarts實例(echartsInstance)對象
eChartsInstance 對象是通過 echarts.init 方法調用之后得到的
OVER(報告大哥:您已成功拿下ECharts)
總結
以上是生活随笔為你收集整理的ECharts实操手册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 连接kafka_设置多个kaf
- 下一篇: python中括号的作用_浅析pytho