ECharts 数据筛选的常用方式
方式一 前端内存过滤与 setOption 示例
// 原始数据
const rawData = [
{ category: 'A', value: 120 },
{ category: 'B', value: 200 },
{ category: 'C', value: 150 },
{ category: 'A', value: 80 },
{ category: 'B', value: 70 },
{ category: 'C', value: 110 }
];
// 初始化
const chart = echarts.init(document.getElementById('main'));
function updateChart(selectedCategory = 'All') {
// 1) 过滤
const filtered = selectedCategory === 'All'
? rawData
: rawData.filter(d => d.category === selectedCategory);
// 2) 排序(可选)
filtered.sort((a, b) => b.value - a.value);
// 3) 更新图表
chart.setOption({
xAxis: { type: 'category', data: filtered.map(d => d.category) },
yAxis: { type: 'value' },
series: [{ type: 'bar', data: filtered.map(d => d.value) }]
});
}
// 绑定控件事件(示例:下拉框)
document.getElementById('categorySelect').addEventListener('change', e => {
updateChart(e.target.value);
});
// 首次渲染
updateChart();
方式二 dataset 与 transform 示例
option = {
dataset: [
{
// 原始数据
source: [
['Product', 'Sales', 'Price', 'Year'],
['Cake', 123, 32, 2011],
['Latte', 231, 14, 2011],
['Tofu', 235, 5, 2011],
['Milk Tee', 341, 25, 2011],
['Cake', 143, 30, 2012],
['Latte', 201, 19, 2012],
['Tofu', 255, 7, 2012],
['Milk Tee', 241, 27, 2012],
['Cake', 153, 28, 2013],
['Latte', 181, 21, 2013],
['Tofu', 395, 4, 2013],
['Milk Tee', 281, 31, 2013]
]
},
{
// 派生数据集:筛选 Year === 2011
transform: {
type: 'filter',
config: { dimension: 'Year', value: 2011 }
}
},
{
// 派生数据集:筛选 Year === 2012 并按 Year 降序
transform: [
{ type: 'filter', config: { dimension: 'Year', value: 2012 } },
{ type: 'sort', config: { dimension: 'Year', order: 'desc' } }
]
}
],
series: [
{
type: 'pie',
radius: 50,
center: ['25%', '50%'],
datasetIndex: 1 // 使用第2个 dataset(2011)
},
{
type: 'pie',
radius: 50,
center: ['75%', '50%'],
datasetIndex: 2 // 使用第3个 dataset(2012,已排序)
}
]
};
方式三 dataZoom 交互筛选示例
option = {
xAxis: { type: 'value' },
yAxis: { type: 'value' },
dataZoom: [
{
type: 'slider', // 滑动条型
xAxisIndex: 0,
start: 0,
end: 100
},
{
type: 'inside', // 内置型(鼠标滚轮/拖拽)
xAxisIndex: 0
}
],
series: [{
type: 'line',
data: [
[10, 23], [20, 45], [30, 30], [40, 70], [50, 50],
[60, 80], [70, 60], [80, 90], [90, 40], [100, 85]
]
}]
};
多图表联动与性能建议
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。