ECharts-Dataset (dataset)
ECharts verwendet Datensatz zur Datenverwaltung.
Die dataset-Komponente dient der separaten Datendeklaration, wodurch Daten unabhängig verwaltet, von mehreren Komponenten wiederverwendet und eine Zuordnung von Daten zu Visualisierungen auf Basis der Daten ermöglicht wird.
Unten steht das einfachste Beispiel für dataset:
Beispiel
legend: {},
tooltip: {},
dataset: {
// Einen Datensatz bereitstellen.
source: [
['product', '2015', '2016', '2017'],
['Matcha Latte', 43.3, 85.8, 93.7],
['Milk Tea', 83.1, 73.4, 55.1],
['Cheese Cocoa', 86.4, 65.2, 82.5],
['Walnut Brownie', 72.4, 53.9, 39.1]
]
},
// Eine X-Achse deklarieren, eine Kategorieachse (category). Standardmäßig entspricht die Kategorieachse der ersten Spalte des Datensatzes.
xAxis: {type: 'category'},
// Deklariere eine Y-Achse, eine Wertachse.
yAxis: {},
// Deklariere mehrere Balkenserien. Standardmäßig entspricht jede Serie automatisch jeweils einer Spalte des Datensatzes.
series: [
{type: 'bar'},
{type: 'bar'},
{type: 'bar'}
]
}
Selbst ausprobieren »
Alternativ kann auch das übliche Objekt-Array-Format verwendet werden:
Beispiel
legend: {},
tooltip: {},
dataset: {
// Hier wird die Reihenfolge der Dimensionsnamen angegeben, wodurch die Standardzuordnung von Dimensionen zu Achsen genutzt werden kann.
// Wenn keine Dimensionen angegeben sind, kann die Zuordnung auch über das angegebene series.encode vervollständigt werden, siehe unten.
dimensions: ['product', '2015', '2016', '2017'],
source: [
{product: 'Matcha Latte', '2015': 43.3, '2016': 85.8, '2017': 93.7},
{product: 'Milchtee', '2015': 83.1, '2016': 73.4, '2017': 55.1},
{product: 'Käse-Kakao', '2015': 86.4, '2016': 65.2, '2017': 82.5},
{product: 'Walnuss-Brownie', '2015': 72.4, '2016': 53.9, '2017': 39.1}
]
},
xAxis: {type: 'category'},
yAxis: {},
series: [
{type: 'bar'},
{type: 'bar'},
{type: 'bar'}
]
};
Selbst ausprobieren »
Zuordnung von Daten zu Grafiken
Im Konfigurationselement können wir Daten auf Grafiken abbilden.
Wir können das Attribut series.seriesLayoutBy verwenden, um zu konfigurieren, ob der Datensatz Spalten oder Zeilen den grafischen Serien zuordnet. Standardmäßig erfolgt die Zuordnung über Spalten.
Im folgenden Beispiel verwenden wir die Eigenschaft seriesLayoutBy, um zu konfigurieren, ob Daten nach Spalten oder nach Zeilen angezeigt werden.
Beispiel
legend: {},
tooltip: {},
dataset: {
source: [
['product', '2012', '2013', '2014', '2015'],
['Matcha Latte', 41.1, 30.4, 65.1, 53.3],
['Milk Tea', 86.5, 92.1, 85.7, 83.1],
['Cheese Cocoa', 24.1, 67.2, 79.5, 86.4]
]
},
xAxis: [
{type: 'category', gridIndex: 0},
{type: 'category', gridIndex: 1}
],
yAxis: [
{gridIndex: 0},
{gridIndex: 1}
],
grid: [
{bottom: '55%'},
{top: '55%'}
],
series: [
// Diese Serien befinden sich im ersten kartesischen Koordinatensystem, wobei jede Serie einer Zeile im Datensatz entspricht.
{type: 'bar', seriesLayoutBy: 'row'},
{type: 'bar', seriesLayoutBy: 'row'},
{type: 'bar', seriesLayoutBy: 'row'},
// Diese Serien befinden sich im zweiten kartesischen Koordinatensystem, wobei jede Serie einer Spalte im Datensatz entspricht.
{type: 'bar', xAxisIndex: 1, yAxisIndex: 1},
{type: 'bar', xAxisIndex: 1, yAxisIndex: 1},
{type: 'bar', xAxisIndex: 1, yAxisIndex: 1},
{type: 'bar', xAxisIndex: 1, yAxisIndex: 1}
]
}
Selbst ausprobieren »
Die von gängigen Diagrammen dargestellten Daten haben meist eine "zweidimensionale Tabellenstruktur". Wir können die Eigenschaft series.encode verwenden, um die entsprechenden Daten den Achsen zuzuordnen (z. B. X- und Y-Achsen):
Beispiel
dataset: {
source: [
['score', 'amount', 'product'],
[89.3, 58212, 'Matcha Latte'],
[57.1, 78254, 'Milk Tea'],
[74.4, 41032, 'Cheese Cocoa'],
[50.1, 12755, 'Cheese Brownie'],
[89.7, 20145, 'Matcha-Kakao'],
[68.1, 79146, 'Tee'],
[19.6, 91852, 'Orangensaft'],
[10.6, 101852, 'Zitronensaft'],
[32.7, 20112, 'Walnut Brownie']
]
},
grid: {containLabel: true},
xAxis: {},
yAxis: {type: 'category'},
series: [
{
type: 'bar',
encode: {
// Ordne die Spalte "amount" der X-Achse zu.
x: 'amount',
// Ordne die Spalte "product" der Y-Achse zu.
y: 'product'
}
}
]
};
Selbst ausprobieren »
Die grundlegende Struktur der encode-Deklaration ist wie folgt, wobei die linke Seite des Doppelpunkts der spezifische Name des Koordinatensystems, Labels usw. ist, wie z. B. 'x', 'y', 'tooltip' usw., und die rechte Seite des Doppelpunkts der Dimensionsname in den Daten (Zeichenkettenformat) oder der Dimensionsindex (Zahlenformat, Zählung ab 0) ist. Eine oder mehrere Dimensionen können angegeben werden (unter Verwendung eines Arrays). Im Allgemeinen müssen nicht alle der folgenden Informationen geschrieben werden; schreiben Sie sie nach Bedarf.
Die folgenden Eigenschaften werden von encode unterstützt:
// 在任何坐标系和系列中,都支持:
encode: {
// 使用 “名为 product 的维度” 和 “名为 score 的维度” 的值在 tooltip 中显示
tooltip: ['product', 'score']
// 使用 “维度 1” 和 “维度 3” 的维度名连起来作为系列名。(有时候名字比较长,这可以避免在 series.name 重复输入这些名字)
seriesName: [1, 3],
// 表示使用 “维度2” 中的值作为 id。这在使用 setOption 动态更新数据时有用处,可以使新老数据用 id 对应起来,从而能够产生合适的数据更新动画。
itemId: 2,
// 指定数据项的名称使用 “维度3” 在饼图等图表中有用,可以使这个名字显示在图例(legend)中。
itemName: 3
}
// 直角坐标系(grid/cartesian)特有的属性:
encode: {
// 把 “维度1”、“维度5”、“名为 score 的维度” 映射到 X 轴:
x: [1, 5, 'score'],
// 把“维度0”映射到 Y 轴。
y: 0
}
// 单轴(singleAxis)特有的属性:
encode: {
single: 3
}
// 极坐标系(polar)特有的属性:
encode: {
radius: 3,
angle: 2
}
// 地理坐标系(geo)特有的属性:
encode: {
lng: 3,
lat: 2
}
// 对于一些没有坐标系的图表,例如饼图、漏斗图等,可以是:
encode: {
value: 3
}
Weitere encode-Beispiele:
Beispiel
var sizeValue = '57%';
var symbolSize = 2.5;
option = {
legend: {},
tooltip: {},
toolbox: {
left: 'center',
Merkmal: {
dataZoom: {}
}
},
grid: [
{right: sizeValue, bottom: sizeValue},
{left: sizeValue, bottom: sizeValue},
{right: sizeValue, top: sizeValue},
{left: sizeValue, top: sizeValue}
],
xAxis: [
{type: 'value', gridIndex: 0, name: 'Einkommen', axisLabel: {rotate: 50, interval: 0}},
{type: 'category', gridIndex: 1, name: 'Land', boundaryGap: false, axisLabel: {rotate: 50, interval: 0}},
{type: 'value', gridIndex: 2, name: 'Einkommen', axisLabel: {rotate: 50, interval: 0}},
{type: 'value', gridIndex: 3, name: 'Lebenserwartung', axisLabel: {rotate: 50, interval: 0}}
],
yAxis: [
{type: 'value', gridIndex: 0, name: 'Lebenserwartung'},
{type: 'value', gridIndex: 1, name: 'Einkommen'},
{type: 'value', gridIndex: 2, name: 'Bevölkerung'},
{type: 'value', gridIndex: 3, name: 'Bevölkerung'}
],
dataset: {
dimensions: [
'Einkommen',
'Lebenserwartung',
'Bevölkerung',
'Land',
{name: 'Jahr', type: 'ordinal'}
],
source: data
},
series: [
{
type: 'scatter',
symbolSize: symbolSize,
xAxisIndex: 0,
yAxisIndex: 0,
encode: {
x: 'Einkommen',
y: 'Lebenserwartung',
tooltip: [0, 1, 2, 3, 4]
}
},
{
type: 'scatter',
symbolSize: symbolSize,
xAxisIndex: 1,
yAxisIndex: 1,
encode: {
x: 'Land',
y: 'Einkommen',
tooltip: [0, 1, 2, 3, 4]
}
},
{
type: 'scatter',
symbolSize: symbolSize,
xAxisIndex: 2,
yAxisIndex: 2,
encode: {
x: 'Einkommen',
y: 'Bevölkerung',
tooltip: [0, 1, 2, 3, 4]
}
},
{
type: 'scatter',
symbolSize: symbolSize,
xAxisIndex: 3,
yAxisIndex: 3,
encode: {
x: 'Lebenserwartung',
y: 'Bevölkerung',
tooltip: [0, 1, 2, 3, 4]
}
}
]
};
myChart.setOption(option);
});
Selbst ausprobieren »
Zuordnung visueller Kanäle (Farbe, Größe usw.)
Wir können die visualMap-Komponente verwenden, um visuelle Kanäle zuzuordnen.
Visuelle Elemente können sein:
- symbol: Die grafische Form des grafischen Elements.
- symbolSize: die Größe des grafischen Elements.
- color: die Farbe des grafischen Elements.
- colorAlpha: Die Transparenz der Farbe des grafischen Elements.
- opacity: Die Transparenz des grafischen Elements und seiner Bestandteile (wie Textbeschriftungen).
- colorLightness: die Helligkeit der Farbe.
- colorSaturation: die Sättigung der Farbe.
- colorHue: der Farbton der Farbe.
Es können mehrere visualMap-Komponenten definiert werden, wodurch mehrere Dimensionen in den Daten gleichzeitig visuell abgebildet werden können.
Beispiel
dataset: {
source: [
['score', 'amount', 'product'],
[89.3, 58212, 'Matcha Latte'],
[57.1, 78254, 'Milk Tea'],
[74.4, 41032, 'Cheese Cocoa'],
[50.1, 12755, 'Cheese Brownie'],
[89.7, 20145, 'Matcha-Kakao'],
[68.1, 79146, 'Tee'],
[19.6, 91852, 'Orangensaft'],
[10.6, 101852, 'Zitronensaft'],
[32.7, 20112, 'Walnut Brownie']
]
},
grid: {containLabel: true},
xAxis: {name: 'amount'},
yAxis: {type: 'category'},
visualMap: {
orient: 'horizontal',
left: 'center',
min: 10,
max: 100,
text: ['Hohe Punktzahl', 'Niedrige Punktzahl'],
// Die Spalte score der Farbe zuordnen
dimension: 0,
inRange: {
color: ['#D7DA8B', '#E15457']
}
},
series: [
{
type: 'bar',
encode: {
// Die Spalte "amount" der X-Achse zuordnen.
x: 'amount',
// Die Spalte "product" der Y-Achse zuordnen
y: 'product'
}
}
]
};
Selbst ausprobieren »
Interaktive Verknüpfung
Im folgenden Beispiel teilen mehrere Diagramme einen einzigen Datensatz, mit verknüpften Interaktionen:
Beispiel
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);
});
Selbst ausprobieren »