高图:在散点图上反转图例过滤器

时间:2018-09-09 22:42:43

标签: javascript highcharts

Highcharts具有一个非常不错的过滤功能,图表可以呈现,显示图例,您可以单击图例中的每个项目将其从图表中删除。我正在处理一个较大的数据集,并且想要进行相反的操作(即,不删除在图例中单击的项目,而是保留所有其他项目,我只想显示该项目,删除所有其他项目)

尽管有些Highcharts Series - want to show/hide all EXCEPT selected series (reversal of default logic)这样的StackOverflow条目看起来很完美(并且可以在jsfiddle中运行),但我正在使用散点图。查看文档,看起来它应该仍然可以使用,因为散点图使用系列,事件和legendItemClick,但是该答案中的示例无效。

甚至简单到...

plotOptions: {
  scatter: {
    marker: {
      radius: c.data.radius,
      states: {
        hover: {
            enabled: true,
            lineColor: 'rgb(100,100,100)'
        }
      }
    },
    series: {
      events: {
        legendItemClick: function(event) {
          console.log('legend clicked')
          return false;
        }
      }
    }
  }
}

...不起作用(尽管图表显示正确)。控制台中没有消息,并且return false不会停止默认行为。似乎散点图无法识别legendItemClick。

有人有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这是一个简单的示例,说明如何在Highcharts scatter图表中实现所需的行为:

    legendItemClick: function(event) {
      var series = this.chart.series,
        index = this.index;

      if (this.visible) {
        return false

      } else {
        Highcharts.each(series, function(s) {
          if (s.index !== index) {
            s.hide();
          } else {
            return true
          }
        });
      }
    }

实时演示:https://jsfiddle.net/BlackLabel/45e01r78/

答案 1 :(得分:-1)

您可以使用FusionCharts轻松满足您的要求,您可以在该系列的数据集级别使用“ visible”:“ 0”使用单个属性过滤该系列,这将禁用图例以及何时启用该系列通过单击图例,还可以自定义图例,可以反转图例的顺序,还可以像事件一样调用图例项单击翻转,从而使图例管理非常容易,这里是一个示例片段相同

这是一个示例fiddle

hashset

要了解有关FusionCharts图例的更多信息,请查看此link