使用数据集时如何覆盖单个 ECharts 数据点的外观?
How override appearance of individual ECharts data points when using a dataset?
我有一个包含许多数据点的 echarts 图,我使用数据集提供这些数据。如何仅为部分数据点设置格式设置选项?
例如如果我没有使用数据集,那么我可能会突出显示单个数据点 like this:
series: [
{
type: 'bar',
data: [
97.7,
{
value: 43,
itemStyle: {
color: '#ff0000'
}
},
92.5
]
但是using a dataset我没有地方存放这些额外的信息:
var myChart = echarts.init(document.getElementById('main'));
myChart.setOption({
dataset: {
source: [
['A', 97.7],
['B', 43],
['C', 92.5]
]
},
xAxis: { type: 'category' },
yAxis: {},
series: [{ type: 'bar' }]
});
如果我尝试在 series[type='bar'].data
中设置选项,那么它 removes the data supplied by the dataset。
面对同样的问题,不相信这个功能没有实现到 ECharts 中。我通过使用回调函数找到了解决方案。
通过定义一个 object 将每个数据点的颜色保存在其各自的键上,我能够 return 定义的颜色:
<div id="main" style="width: 600px;height:400px;"></div>
var myChart = echarts.init(document.getElementById('main'));
let colors = {
'A': '#FF0000',
'B': '#00FF00',
'C': '#0000FF'
};
myChart.setOption({
dataset: [{
source: [
['name', 'value'],
['A', 97.7],
['B', 43],
['C', 92.5]
]
}],
xAxis: {
type: 'category',
},
yAxis: {},
series: {
type: 'bar',
itemStyle: {
color: function(seriesIndex) {
console.log(seriesIndex);
return (colors[seriesIndex.name]);
}
}
}
});
fiddle
此外,我向数据集添加了一个可选的 header 行。这不是必需的,因为 ECharts 通过“名称”引用数据集中的第一列。为了更加清晰,我向该函数添加了一个日志语句,以便您可以深入了解在呈现图表时数据集是如何处理的。
如果需要更简单的解决方案,可以通过创建一个颜色数组并将 colorBy 选项设置为系列中的“数据”来实现 object - 请参阅 ECharts documentation.
这只是遍历颜色列表并将它们分配给集合中的每个条目:
<div id="main" style="width: 600px;height:400px;"></div>
var myChart = echarts.init(document.getElementById('main'));
myChart.setOption({
dataset: [{
source: [
['name', 'value'],
['A', 97.7],
['B', 43],
['C', 92.5]
]
}],
xAxis: {
type: 'category',
},
color: [
'#FF0000',
'#00FF00',
'#0000FF'
],
yAxis: {},
series: {
type: 'bar',
colorBy: 'data',
}
});
我有一个包含许多数据点的 echarts 图,我使用数据集提供这些数据。如何仅为部分数据点设置格式设置选项?
例如如果我没有使用数据集,那么我可能会突出显示单个数据点 like this:
series: [
{
type: 'bar',
data: [
97.7,
{
value: 43,
itemStyle: {
color: '#ff0000'
}
},
92.5
]
但是using a dataset我没有地方存放这些额外的信息:
var myChart = echarts.init(document.getElementById('main'));
myChart.setOption({
dataset: {
source: [
['A', 97.7],
['B', 43],
['C', 92.5]
]
},
xAxis: { type: 'category' },
yAxis: {},
series: [{ type: 'bar' }]
});
如果我尝试在 series[type='bar'].data
中设置选项,那么它 removes the data supplied by the dataset。
面对同样的问题,不相信这个功能没有实现到 ECharts 中。我通过使用回调函数找到了解决方案。
通过定义一个 object 将每个数据点的颜色保存在其各自的键上,我能够 return 定义的颜色:
<div id="main" style="width: 600px;height:400px;"></div>
var myChart = echarts.init(document.getElementById('main'));
let colors = {
'A': '#FF0000',
'B': '#00FF00',
'C': '#0000FF'
};
myChart.setOption({
dataset: [{
source: [
['name', 'value'],
['A', 97.7],
['B', 43],
['C', 92.5]
]
}],
xAxis: {
type: 'category',
},
yAxis: {},
series: {
type: 'bar',
itemStyle: {
color: function(seriesIndex) {
console.log(seriesIndex);
return (colors[seriesIndex.name]);
}
}
}
});
fiddle
此外,我向数据集添加了一个可选的 header 行。这不是必需的,因为 ECharts 通过“名称”引用数据集中的第一列。为了更加清晰,我向该函数添加了一个日志语句,以便您可以深入了解在呈现图表时数据集是如何处理的。
如果需要更简单的解决方案,可以通过创建一个颜色数组并将 colorBy 选项设置为系列中的“数据”来实现 object - 请参阅 ECharts documentation.
这只是遍历颜色列表并将它们分配给集合中的每个条目:
<div id="main" style="width: 600px;height:400px;"></div>
var myChart = echarts.init(document.getElementById('main'));
myChart.setOption({
dataset: [{
source: [
['name', 'value'],
['A', 97.7],
['B', 43],
['C', 92.5]
]
}],
xAxis: {
type: 'category',
},
color: [
'#FF0000',
'#00FF00',
'#0000FF'
],
yAxis: {},
series: {
type: 'bar',
colorBy: 'data',
}
});