這篇文章會首先介紹使用echarts的最簡單的例子,而後介紹一些通用的配置項。後面會拿幾篇文章專門講解echarts的graphic, 以及echarts的自定義系列,掌握了echarts的自定義系列的用法,那繪製任何圖形都不在話下。除了普通的渲染,還有一些交互行爲,好比拖動等等,後面也會介紹。
因此主要包含幾個方面:
一、echarts的通用配置項
二、echarts的graphic
三、echarts的自定義系列
四、echarts的交互javascript
首頁進入第一塊內容,echarts的通用配置項。
咱們來看看官網的第一的例子:html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts</title> <!-- 引入 echarts.js --> <script src="echarts.min.js"></script> </head> <body> <!-- 爲ECharts準備一個具有大小(寬高)的Dom --> <div id="main" style="width: 600px;height:400px;"></div> <script type="text/javascript"> // 基於準備好的dom,初始化echarts實例 var myChart = echarts.init(document.getElementById('main')); // 指定圖表的配置項和數據 var option = { title: { text: 'ECharts 入門示例' }, tooltip: {}, legend: { data:['銷量'] }, xAxis: { data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"] }, yAxis: {}, series: [{ name: '銷量', type: 'bar', data: [5, 20, 36, 10, 10, 20] }] }; // 使用剛指定的配置項和數據顯示圖表。 myChart.setOption(option); </script> </body> </html>
通用的配置項能夠查看官網的配置項手冊:https://echarts.baidu.com/opt...
這裏只介紹幾種通用的配置,好比grid, xAxis的配置 , yAxis的配置, DataZoom的配置 以及Echarts拖動。java
單個grid最多能夠放上下兩個X軸,左右兩個Y軸,在Echarts3中能夠存在任意個grid組件
下面給幾個grid的實例:數組
https://gallery.echartsjs.com...
並且grid的位置是能夠任意調整的:echarts
grid: [ {x: '7%', y: '7%', width: '38%', height: '38%'}, {x2: '7%', y: '7%', width: '38%', height: '38%'} ]
https://gallery.echartsjs.com...dom
grid: [ {x: '7%', y: '7%', width: '38%', height: '38%'}, {x: '7%', y2: '7%', width: '38%', height: '38%'} ]
https://gallery.echartsjs.com...ide
grid: [ {x: '7%', y: '7%', width: '38%', height: '38%'}, {x2: '7%', y2: '7%', width: '38%', height: '38%'} ]
xAxis的配置與yAxis的配置能夠是數組,也就是若是是多個grid的時候,就能夠按照數組的形式來配置
好比:spa
xAxis: [ {gridIndex: 0, min: 0, max: 20}, {gridIndex: 1, min: 0, max: 20} ], yAxis: [ {gridIndex: 0, min: 0, max: 20}, {gridIndex: 1, min: 0, max: 15} ],
https://gallery.echartsjs.com...code
xAxis gridIndex:0 表示第一個grid的x軸,xAxis gridIndex: 1表示第二個grid的x軸;對於yAxis同理htm
dataZoom 組件用於區域縮放,這裏詳細介紹幾個屬性:type, start, end, filterMode, xAxisIndex, yAxisIndex。
type: inside, 內置於座標系中,使用戶能夠在座標系上經過鼠標拖拽、鼠標滾輪、手指滑動(觸屏上)來縮放或漫遊座標系
type: slider, 有單獨的滑動條,用戶在滑動條上進行縮放或漫遊
start: 數據窗口範圍的起始百分比, 範圍是:0 ~ 100
end: 數據窗口範圍的結束百分比, 範圍是:0 ~ 100
startValue: 數據窗口範圍的起始數值。若是設置了 dataZoom-inside.start 則 startValue 失效。若是軸的類型爲 category,則 startValue 既能夠設置爲 axis.data 數組的 index,也能夠設置爲數組值自己。 可是若是設置爲數組值自己,會在內部自動轉化爲數組的 index
endValue: 數據窗口範圍的結束數值。若是設置了 dataZoom-inside.end 則 endValue 失效。
dataZoom 的運行原理是經過 數據過濾 來達到 數據窗口縮放 的效果。數據過濾模式的設置不一樣,效果也不一樣。
filterMode:
可選值爲:
'filter':當前數據窗口外的數據,被 過濾掉。即 會 影響其餘軸的數據範圍。每一個數據項,只要有一個維度在數據窗口外,整個數據項就會被過濾掉。
'weakFilter':當前數據窗口外的數據,被 過濾掉。即 會 影響其餘軸的數據範圍。每一個數據項,只有當所有維度都在數據窗口同側外部,整個數據項纔會被過濾掉。
'empty':當前數據窗口外的數據,被 設置爲空。即 不會 影響其餘軸的數據範圍。
'none': 不過濾數據,只改變數軸範圍。
如何設置,由用戶根據場景和需求本身決定。經驗來講:
一、當『只有 X 軸 或 只有 Y 軸受 dataZoom 組件控制』時,常使用 filterMode: 'filter',這樣能使另外一個軸自適應過濾後的數值範圍。
二、當『X 軸 Y 軸分別受 dataZoom 組件控制』時:
若是 X 軸和 Y 軸是『同等地位的、不該互相影響的』,好比在『雙數值軸散點圖』中,那麼兩個軸可都設爲 fiterMode: 'empty'。
三、若是 X 軸爲主,Y 軸爲輔,好比在『柱狀圖』中,須要『拖動 dataZoomX 改變 X 軸過濾柱子時,Y 軸的範圍也自適應剩餘柱子的高度』,『拖動 dataZoomY 改變 Y 軸過濾柱子時,X 軸範圍不受影響』,那麼就 X軸設爲 fiterMode: 'filter',Y 軸設爲 fiterMode: 'empty',即主軸 'filter',輔軸 'empty’。
xAxisIndex: 表示控制第幾個x軸,若是是 number 表示控制一個軸,若是是 Array 表示控制多個軸
yAxisIndex: 表示控制第幾個y軸,若是是 number 表示控制一個軸,若是是 Array 表示控制多個軸
詳情查看下面的實例:
https://gallery.echartsjs.com...
關於拖動的例子仍是挺少的,在官網上echarts給了兩個實例, 詳見https://echarts.baidu.com/exa...
第一個實例比較簡單,就是經過graphic的ondrag與draggable結合使用的方式,裏面使用了convertToPixel,convertFromPixel兩個方法
convertToPixel:轉換座標系上的點到像素座標值
convertFromPixel:轉換像素座標值到邏輯座標系上的點,是convertToPixel的逆運算
好比:
在直角座標系(cartesian,grid)上,把某個點的座標轉換成爲像素座標:
chart.convertToPixel({xAxisIndex: 2, yAxisId: 'y1'}, [300, 900]);
把某個座標軸的點轉換成像素座標:
// id 爲 'x0' 的 xAxis 的刻度 3000 位置所對應的橫向像素位置: chart.convertToPixel({xAxisId: 'x0'}, 3000); // 返回一個 number。 // 第二個 yAxis 的刻度 600 位置所對應的縱向像素位置: chart.convertToPixel({yAxisIndex: 1}, 600); // 返回一個 number。
把關係圖(graph)的點轉換成像素座標:
// 由於每一個 graph series 本身持有一個座標系,因此咱們直接在 finder 中指定 series:
chart.convertToPixel({seriesIndex: 0}, [2000, 3500]); chart.convertToPixel({seriesId: 'k2'}, [100, 500]);
在某個系列所在的座標系(不管是 cartesian、geo、graph 等)中,轉換某點成像素座標:
// 使用第一個系列對應的座標系: chart.convertToPixel({seriesIndex: 0}, [128.3324, 89.5344]); // 使用 id 爲 'k2' 的系列所對應的座標系: chart.convertToPixel({seriesId: 'k2'}, [128.3324, 89.5344]);
固然,還有其餘的定位依據,詳見以下
seriesIndex: number,
seriesId: string, seriesName: string, geoIndex: number, geoId: string, geoName: string, xAxisIndex: number, xAxisId: string, xAxisName: string, yAxisIndex: number, yAxisId: string, yAxisName: string, gridIndex: number, gridId: string gridName: string
對於裏面的第二個實例,下次會詳細介紹第二個實例。
拖動實例:
有時候咱們會對多個grid拖動從新設置不一樣grid高度的需求,以下實例:
https://gallery.echartsjs.com...
其實這個實例也是利用了ondrag的方法去從新設置了option裏面的一些屬性,而後從新render。
這篇文章主要介紹了grid, xAxis的配置, yAxis的配置, DataZoom的配置以及Echarts拖動功能,後面的文章會分別介紹Echarts的graphic,Echarts的自定義系列,Echarts的交互,若是有想知道其餘配置的使用,能夠留言。