echarts tooltip 多series应用

整体需求

如下图:

  • 热力图作为底,显示委托信息。
  • 两种颜色的气泡图显示买卖信息。
  • 成交曲线
  • 横轴缩放
  • 气泡图,折线图是否展示的开关
    在这里插入图片描述

测试数据

  • x轴定义:marketData.xAxisData
  • y轴定义:marketData.yAxisData
  • 热力图数据:marketData.quotData
  • 卖气泡数据:marketData.matchSellData
  • 买气泡数据:marketData.matchBuyData
  • 成交曲线数据:marketData.matchData
      var marketData = {
        xAxisData: [],
        yAxisData: [],
        quotData: [],
        matchSellData: [],
        matchBuyData: [],
        matchData: []
      }
      marketData.xAxisData = ['09:00:00', '09:00:01', '09:00:02', '09:00:03', '09:00:04', '09:00:05', '09:00:06', '09:00:07', '09:00:08', '09:00:09', '09:00:10', '09:00:11']
      marketData.yAxisData = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
      marketData.quotData = [{ 'x': 0, 'y': 0, 'bsFalg': '1' },
        { 'x': 1, 'y': 0, 'bsFalg': '1' },
        { 'x': 1, 'y': 1, 'bsFalg': '1' },
        { 'x': 1, 'y': 2, 'bsFalg': '1' },
        { 'x': 2, 'y': 0, 'bsFalg': '1' },
        { 'x': 2, 'y': 1, 'bsFalg': '1' },
        { 'x': 2, 'y': 2, 'bsFalg': '3' },
        { 'x': 3, 'y': 1, 'bsFalg': '3' },
        { 'x': 3, 'y': 2, 'bsFalg': '3' },
        { 'x': 3, 'y': 3, 'bsFalg': '3' },
        { 'x': 4, 'y': 2, 'bsFalg': '3' },
        { 'x': 4, 'y': 3, 'bsFalg': '1' },
        { 'x': 4, 'y': 4, 'bsFalg': '1' },
        { 'x': 5, 'y': 2, 'bsFalg': '1' },
        { 'x': 5, 'y': 3, 'bsFalg': '1' },
        { 'x': 5, 'y': 4, 'bsFalg': '1' }]
      marketData.matchSellData = [{ 'x': 2, 'y': 0, 'alertTime': '09:00:01', 'matchQty': 100, 'scatterSize': 10 },
        { 'x': 3, 'y': 1, 'alertTime': '09:00:02', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 4, 'y': 2, 'alertTime': '09:00:03', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 1, 'y': 0, 'alertTime': '09:00:04', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 5, 'y': 2, 'alertTime': '09:00:05', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 6, 'y': 3, 'alertTime': '09:00:06', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 7, 'y': 4, 'alertTime': '09:00:07', 'matchQty': 100, 'scatterSize': 10 },
        { 'x': 8, 'y': 4, 'alertTime': '09:00:08', 'matchQty': 100, 'scatterSize': 10 },
        { 'x': 9, 'y': 4, 'alertTime': '09:00:09', 'matchQty': 100, 'scatterSize': 10 }]
      marketData.matchBuyData = [{ 'x': 2, 'y': 1, 'alertTime': '09:00:01', 'matchQty': 100, 'scatterSize': 10 },
        { 'x': 3, 'y': 2, 'alertTime': '09:00:02', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 4, 'y': 3, 'alertTime': '09:00:03', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 1, 'y': 1, 'alertTime': '09:00:04', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 5, 'y': 1, 'alertTime': '09:00:05', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 6, 'y': 2, 'alertTime': '09:00:06', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 7, 'y': 3, 'alertTime': '09:00:07', 'matchQty': 100, 'scatterSize': 10 },
        { 'x': 8, 'y': 3, 'alertTime': '09:00:08', 'matchQty': 100, 'scatterSize': 10 },
        { 'x': 9, 'y': 3, 'alertTime': '09:00:09', 'matchQty': 100, 'scatterSize': 10 }]
      marketData.matchData = [{ 'x': 1, 'y': 1, 'alertTime': '09:00:01', 'matchQty': 100, 'scatterSize': 10 },
        { 'x': 2, 'y': 2, 'alertTime': '09:00:02', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 3, 'y': 3, 'alertTime': '09:00:03', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 4, 'y': 1, 'alertTime': '09:00:04', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 5, 'y': 1, 'alertTime': '09:00:05', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 6, 'y': 2, 'alertTime': '09:00:06', 'matchQty': 110, 'scatterSize': 20 },
        { 'x': 7, 'y': 3, 'alertTime': '09:00:07', 'matchQty': 100, 'scatterSize': 10 },
        { 'x': 8, 'y': 3, 'alertTime': '09:00:08', 'matchQty': 100, 'scatterSize': 10 },
        { 'x': 9, 'y': 3, 'alertTime': '09:00:09', 'matchQty': 100, 'scatterSize': 10 }]
      var heatData = marketData.quotData.map(quot => [quot.x, quot.y, quot.bsFalg])

多DataSet

Apache ECharts 4 开始支持了 dataset 组件用于单独的数据集声明,从而数据可以单独管理,被多个组件复用,并且可以基于数据指定数据到视觉的映射。
使用dataset的优势:

  • 能够贴近这样的数据可视化常见思维方式:(I) 提供数据,(II) 指定数据到视觉的映射,从而形成图表。
  • 数据和其他配置可以被分离开来。数据常变,其他配置常不变。分开易于分别管理。
  • 数据可以被多个系列或者组件复用,对于大数据量的场景,不必为每个系列创建一份数据。
  • 支持更多的数据的常用格式,例如二维数组、对象数组等,一定程度上避免使用者为了数据格式而进行转换。

简单使用:

dataset: [
          {
            source: marketData.matchBuyData
          },
          {
            source: marketData.matchSellData
          },
          {
            source: marketData.matchData
          }
        ]

多series

heatmap依旧使用data的方式直接引用数据。官方文档明确说明当前dataset的支持列表:

目前并非所有图表都支持 dataset。支持 dataset 的图表有: line、bar、pie、scatter、effectScatter、parallel、candlestick、map、funnel、custom。

scatter通过datasetIndex指定dataset的哪个数据集绑定。序号从0开始。通过symbolSize来设定气泡的大小。
折线图关联dataset的方式和scatter相同。

series: [
          {
            id: 0,
            name: 'Punch Card',
            type: 'heatmap',
            data: heatData,
            label: {
              show: false
            },
            tooltip: {
              show: false
            }
          },
          {
            id: 1,
            name: '买气泡',
            symbolSize: function(data) {
              return data.scatterSize
            },
            type: 'scatter',
            itemStyle: {
              color: 'yellow'
            },
            encode: {
              x: 'x',
              y: 'y'
            },
            datasetIndex: 0,
            tooltip: {
              trigger: 'item',
              formatter: function(params) {
                return '成交主力:买<br/>' + '成交量:' + params.data.matchQty + ' (手) <br/>' + '成交时间窗口:' + params.data.alertTime
              }
            }
          },
          {
            id: 2,
            name: '卖气泡',
            symbolSize: function(data) {
              return data.scatterSize
            },
            type: 'scatter',
            itemStyle: {
              color: 'blue'
            },
            encode: {
              x: 'x',
              y: 'y'
            },
            datasetIndex: 1,
            tooltip: {
              trigger: 'item',
              formatter: function(params) {
                return '成交主力:卖<br/>' + '成交量:' + params.data.matchQty + ' (手) <br/>' + '成交时间窗口:' + params.data.alertTime
              }
            }
          },
          {
            id: 3,
            name: '成交数据',
            type: 'line',
            smooth: true,
            encode: {
              x: 'x',
              y: 'y'
            },
            datasetIndex: 2,
            tooltip: {
              show: false
            }
          }]

tooltip声明

tooltip声明维度

提示框组件的通用介绍:

提示框组件可以设置在多种地方:

  • 可以设置在全局,即 tooltip

  • 可以设置在坐标系中,即 grid.tooltip、polar.tooltip、single.tooltip

  • 可以设置在系列中,即 series.tooltip

  • 可以设置在系列的每个数据项中,即 series.data.tooltip

设置

在全局设置tooltip开启(不在全局设置,tooltip不显示):

option = {
...
        tooltip: {
          trigger: 'item',
          show: true
        },
...
}

series分别设置tooltip展示:

option = {
...
        series: [
          {
          ...
            type: 'heatmap',
            data: heatData,
            tooltip: {
              show: false
            }
          },
          {
            id: 1,
            name: '买气泡',
            ...
            tooltip: {
              trigger: 'item',
              formatter: function(params) {
                return '成交主力:买<br/>' + '成交量:' + params.data.matchQty + ' (手) <br/>' + '成交时间窗口:' + params.data.alertTime
              }
            }
          },
          {
            id: 2,
            name: '卖气泡',
            ...
            tooltip: {
              trigger: 'item',
              formatter: function(params) {
                return '成交主力:卖<br/>' + '成交量:' + params.data.matchQty + ' (手) <br/>' + '成交时间窗口:' + params.data.alertTime
              }
            }
          },
          {
            id: 3,
            name: '成交数据',
            ...
            tooltip: {
              show: false
            }
          }]
...
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Echartsseries中,可以通过设置tooltip来控制数据项的展示方式。根据引用\[1\],可以在option下先设置一个全局的tooltip,然后再给每个series去设置tooltip,通过设置show属性来控制是否展示tooltip。例如,可以设置show为false来隐藏tooltip。另外,根据引用\[2\],也可以在每个series中单独设置tooltip的展示方式,通过设置trigger和formatter属性来定义tooltip的触发方式和展示内容。需要注意的是,根据引用\[3\],在series中设置的tooltip可能会被全局的tooltip覆盖,所以需要注意优先级的问题。可以通过在formatter中根据seriesName来判断展示不同的内容。 #### 引用[.reference_title] - *1* [echarts中为某个series独立设置tooltip](https://blog.csdn.net/u014163074/article/details/116788645)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [echarts tooltipseries应用](https://blog.csdn.net/wangyunzhong/article/details/119237418)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Echarts 柱状图 series新增tooltip](https://blog.csdn.net/vanora1111/article/details/124018047)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值