幾個常見的映射設置方式(官網)


問:如何把第三列設置為 X 軸,第五列設置為 Y 軸?

答:

series: { // 注意維度序號(dimensionIndex)從 0 開始計數,第三列是 dimensions[2]。 encode: {x: 2, y: 4}, ... }

問:如何把第三行設置為 X 軸,第五行設置為 Y 軸?

答:

series: { encode: {x: 2, y: 4}, seriesLayoutBy: 'row', ... }

問:如何把第二列設置為標簽?

答: 關於標簽的顯示 label.formatter,現在支持引用特定維度的值,例如:

series: { label: { // `'{@score}'` 表示 “名為 score” 的維度里的值。 // `'{@[4]}'` 表示引用序號為 4 的維度里的值。 formatter: 'aaa{@product}bbb{@score}ccc{@[4]}ddd' } }

問:如何讓第 2 列和第 3 列顯示在提示框(tooltip)中?

答:

series: { encode: { tooltip: [1, 2] ... }, ... }

問:數據里沒有維度名,那么怎么給出維度名?

答:

dataset: { dimensions: ['score', 'amount'], source: [ [89.3, 3371], [92.1, 8123], [94.4, 1954], [85.4, 829] ] }

問:如何把第四列映射為氣泡圖的點的大小?

答:

var option = { dataset: { source: [ [12, 323, 11.2], [23, 167, 8.3], [81, 284, 12], [91, 413, 4.1], [13, 287, 13.5] ] }, visualMap: { show: false, dimension: 2, // 指向第三列(列序號從 0 開始記,所以設置為 2)。 min: 2, // 需要給出數值范圍,最小數值。 max: 15, // 需要給出數值范圍,最大數值。 inRange: { // 氣泡尺寸:5 像素到 60 像素。 symbolSize: [5, 60] } }, xAxis: {}, yAxis: {}, series: { type: 'scatter' } };


問:encode 里指定了映射,但是不管用?

答:可以查查有沒有拼錯,比如,維度名是:'Life Expectancy',encode 中拼成了 'Life Expectency'

 

數據的各種格式

常見圖表中,數據適於用二維表的形式描述。廣為使用的數據表格軟件(如 MS Excel、Numbers)或者關系數據數據庫都是二維表。他們的數據可以導出成 JSON 格式,輸入到 dataset.source 中,在不少情況下可以免去一些數據處理的步驟。

假如數據導出成 csv 文件,那么可以使用一些 csv 工具如 dsv 或者 PapaParse 將 csv 轉成 JSON。

在 JavaScript 常用的數據傳輸格式中,二維數組可以比較直觀的存儲二維表。前面的示例都是使用二維數組表示。

除了二維數組以外,dataset 也支持例如下面 key-value 方式的數據格式,這類格式也非常常見。但是這類格式中,目前並不支持 seriesLayoutBy 參數。

dataset: [{ // 按行的 key-value 形式(對象數組),這是個比較常見的格式。 source: [ {product: 'Matcha Latte', count: 823, score: 95.8}, {product: 'Milk Tea', count: 235, score: 81.4}, {product: 'Cheese Cocoa', count: 1042, score: 91.2}, {product: 'Walnut Brownie', count: 988, score: 76.9} ] }, { // 按列的 key-value 形式。 source: { 'product': ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'], 'count': [823, 235, 1042, 988], 'score': [95.8, 81.4, 91.2, 76.9] } }]

多個 dataset 和他們的引用
可以同時定義多個 dataset。系列可以通過 series.datasetIndex 來指定引用哪個 dataset。
var option = { dataset: [{ // 序號為 0 的 dataset。 source: [...], }, { // 序號為 1 的 dataset。 source: [...] }, { // 序號為 2 的 dataset。 source: [...] }], series: [{ // 使用序號為 2 的 dataset。 datasetIndex: 2 }, { // 使用序號為 1 的 dataset。 datasetIndex: 1 }] }

ECharts 3 的數據設置方式(series.data)仍正常使用

ECharts 4 之前一直以來的數據聲明方式仍然被正常支持,如果系列已經聲明了 series.data, 那么就會使用 series.data 而非 dataset

{ xAxis: { type: 'category' data: ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'] }, yAxis: {}, series: [{ type: 'bar', name: '2015', data: [89.3, 92.1, 94.4, 85.4] }, { type: 'bar', name: '2016', data: [95.8, 89.4, 91.2, 76.9] }, { type: 'bar', name: '2017', data: [97.7, 83.1, 92.5, 78.1] }] }

其實,series.data 也是種會一直存在的重要設置方式。一些特殊的非 table 格式的圖表,
如 treemapgraphlines 等,現在仍不支持在 dataset 中設置,仍然需要使用 series.data
另外,對於巨大數據量的渲染(如百萬以上的數據量),需要使用 appendData 進行增量加載,這種情況不支持使用 dataset

其他

需要在一個頁面中有兩個圖表只需要聲明兩個實例就好了

目前並非所有圖表都支持 dataset。支持 dataset 的圖表有: linebarpiescattereffectScatterparallelcandlestickmapfunnelcustom。 后續會有更多的圖表進行支持。

最后,

給出一個示例,多個圖表共享一個 dataset,並帶有聯動交互:

 

code:


setTimeout(function () {

option = {
legend: {},
tooltip: {
trigger: 'axis',
showContent: false
},
dataset: {
source: [
['product', '2012', '2013', '2014', '2015', '2016', '2017'],
['Matcha Latte', 41.1, 30.4, 65.1, 53.3, 83.8, 98.7],
['Milk Tea', 86.5, 92.1, 85.7, 83.1, 73.4, 55.1],
['Cheese Cocoa', 24.1, 67.2, 79.5, 86.4, 65.2, 82.5],
['Walnut Brownie', 55.2, 67.1, 69.2, 72.4, 53.9, 39.1]
]
},
xAxis: {type: 'category'},
yAxis: {gridIndex: 0},
grid: {top: '55%'},
series: [
{type: 'line', smooth: true, seriesLayoutBy: 'row'},
{type: 'line', smooth: true, seriesLayoutBy: 'row'},
{type: 'line', smooth: true, seriesLayoutBy: 'row'},
{type: 'line', smooth: true, seriesLayoutBy: 'row'},
{
type: 'pie',
id: 'pie',
radius: '30%',
center: ['50%', '25%'],
label: {
formatter: '{b}: {@2012} ({d}%)'
},
encode: {
itemName: 'product',
value: '2012',
tooltip: '2012'
}
}
]
};

myChart.on('updateAxisPointer', function (event) {
var xAxisInfo = event.axesInfo[0];
if (xAxisInfo) {
var dimension = xAxisInfo.value + 1;
myChart.setOption({
series: {
id: 'pie',
label: {
formatter: '{b}: {@[' + dimension + ']} ({d}%)'
},
encode: {
value: dimension,
tooltip: dimension
}
}
});
}
});

myChart.setOption(option);

});

 



 


免責聲明!

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



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