【问题标题】:link 2 different types of highcharts data链接 2 种不同类型的 highcharts 数据
【发布时间】:2016-09-25 18:29:36
【问题描述】:

是否可以在 2 个不同类型的图表中链接/同步 2 个图表数据以同时显示工具提示?

例如,我有一个饼图和一个面积图。

饼图表示特定浏览器的百分比,面积图显示每个浏览器每年的下载量。

我需要做的是,如果有人单击或悬停在饼图的部分上,则应突出显示相关行和面积图的工具提示...

因此,当有人在饼图上点击/悬停在 firefox 上时,应该显示与该区域相关的行,反之亦然...

highcharts 可以做到这一点吗?

到目前为止我所做的工作是https://jsfiddle.net/livewirerules/a9tntdam/1/

我注意到的一件事是我在面积图中添加了event,以在工具提示悬停时显示颜色。

events: {
               tooltipRefresh: function(e) {
                 if (!e.target.hoverSeries) return;
                 $('.highcharts-tooltip>path:last-of-type')
                   .css('fill', e.target.hoverSeries.color);
               }
             }

当我将一条线悬停在面积图上并移动到饼图时,工具提示的背景颜色会发生变化。

【问题讨论】:

    标签: highcharts


    【解决方案1】:

    当您将鼠标悬停在饼图上时,我不确定您希望在工具提示中显示什么。你有一点,所以很难在另一个图表上显示整个系列的工具提示。

    您可以使用 mouseOver 和 mouseOut 事件回调函数来突出显示系列(因此它们看起来就像悬停时一样):

    point: {
      events: {
        mouseOver: function() {
          var name = this.name;
          Highcharts.each(chart2.series, function(s) {
            if (name === s.name) {
              s.setState('hover');
            }
          });
        },
        mouseOut: function() {
          var name = this.name;
          Highcharts.each(chart2.series, function(s) {
            if (name === s.name) {
              s.setState('');
            }
          });
        }
      }
    },
    

    您可以使用 tooltip.refresh(point) 刷新特定点的工具提示:

          mouseOver: function(e) {
            this.group.toFront();
            this.markerGroup.toFront();
            var name = this.name;
            Highcharts.each(chart.series[0].data, function(p) {
              if (name === p.name) {
                p.setState('hover');
                chart.tooltip.refresh(p)
              }
            });
          },
    

    在这里您可以看到一个示例,它是如何工作的: http://jsfiddle.net/a9tntdam/4/

    【讨论】:

    • 太棒了...非常感谢..我已经绞尽脑汁数周试图解决这个问题...只是一个小问题...如果您最初在我的饼图中看到它加载时工具提示背景颜色站点(我已将其设置为显示相关颜色)但是当我单击或悬停在折线图上并返回到饼图时,它会显示悬停/单击的线条颜色。例如,如果您单击蓝线并返回到饼图..所有工具提示都是蓝色的。我该如何解决?再次感谢
    • 您可以在 mouseOut 事件中使用 .css,就像在工具提示刷新事件中一样:jsfiddle.net/a9tntdam/6
    猜你喜欢
    • 2020-12-17
    • 2021-09-12
    • 2016-10-11
    • 2023-03-11
    • 1970-01-01
    • 2020-08-10
    • 2018-11-20
    • 2020-12-11
    • 1970-01-01
    相关资源
    最近更新 更多