You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Apache ECharts内置功能在同一画布切换不同数据集图表

Apache ECharts 提供了两种内置方案可以实现不同数据集的切换,完全不需要外置下拉菜单,样式和图表原生风格天然统一:

方案1:单选模式 Legend 图例(配置最简,推荐)

如果5个数据集都是同类型图表(比如均为折线/柱状图),直接将图例的选中模式设为单选即可,点击对应图例项就会自动切换显示对应数据集,不需要额外写交互逻辑:

const option = {
  legend: {
    data: ['价格', '买入量', '卖出量', '7日买入', '7日卖出'],
    selectedMode: 'single', // 开启单选模式,每次仅显示一个选中的数据集
    top: 10, // 可自定义位置、样式,和图表完全融合
  },
  xAxis: {
    type: 'category',
    data: /* 你的共用时间轴数据 */
  },
  yAxis: {
    type: 'value'
  },
  series: [
    prices,
    buy_volume,
    sell_volume,
    seven_day_buy,
    seven_day_sell
  ]
}

初始化时可以通过legend.selected配置默认显示的数据集,所有切换逻辑ECharts会自动处理。

方案2:Toolbox 自定义下拉菜单(适配全场景)

如果不同数据集对应的图表配置差异较大(比如图表类型不同、坐标轴配置不同),可以用ECharts内置工具箱的自定义菜单实现,你现有的切换逻辑几乎可以直接复用:

const option = {
  toolbox: {
    feature: {
      datasetSwitch: {
        show: true,
        title: '切换数据集',
        icon: 'path://M432.45,595.836c0-14.43,11.699-26.129,26.129-26.129h129.954c14.43,0,26.129,11.699,26.129,26.129v20.153c0,14.43-11.699,26.129-26.129,26.129H458.58c-14.43,0-26.129-11.699-26.129-26.129V595.836z M617.841,490.55c0-14.43,11.699-26.129,26.129-26.129h129.954c14.43,0,26.129,11.699,26.129,26.129v20.153c0,14.43-11.699,26.129-26.129,26.129H643.97c-14.43,0-26.129-11.699-26.129-26.129V490.55z M253.24,377.795c0-14.43,11.699-26.129,26.129-26.129h420.603c14.43,0,26.129,11.699,26.129,26.129v20.153c0,14.43-11.699,26.129-26.129,26.129H279.37c-14.43,0-26.129-11.699-26.129-26.129V377.795z M70.071,269.847c0-14.43,11.699-26.129,26.129-26.129h603.772c14.43,0,26.129,11.699,26.129,26.129v20.153c0,14.43-11.699,26.129-26.129,26.129H96.2C81.77,316.129,70.071,304.43,70.071,290V269.847z', // 此处为菜单图标svg路径,也可替换为你需要的图标
        menuItems: [
          {name: '价格', value: '0'},
          {name: '买入量', value: '1'},
          {name: '卖出量', value: '2'},
          {name: '7日买入', value: '3'},
          {name: '7日卖出', value: '4'}
        ],
        onclick: function (params) {
          const value = params.value
          if (value == '0') {
            day_chart.setOption(prices, true);
          } else if (value == '1') {
            day_chart.setOption(buy_volume, true);
          } else if (value == '2') {
            day_chart.setOption(sell_volume, true);
          } else if (value == '3') {
            day_chart.setOption(seven_day_buy, true);
          } else if (value == '4') {
            day_chart.setOption(seven_day_sell, true);
          }
        }
      }
    },
    right: 10
  },
  // 剩余其他图表配置
}

两种方案的样式都可以通过ECharts的主题、样式配置项和整体UI统一,完全不需要外置DOM控件。


内容的提问来源于stack exchange,提问作者csjh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:54:05