首页 文章

Highcharts:如何将图例链接到类别而不是条形系列?

提问于
浏览
0

使用Highcharts显示条形图,是否有内置方法将图例项链接到类别而不是系列?因此,我会看到一个带有一堆条形图的图表,当我点击一个图例项目时,它会显示或隐藏与单个类别相关联的条形图 .

谢谢

2 回答

  • 0

    没有内置的方式 .

    但是,您可以通过多种方式伪造它 .

    一种方法是为每个类别使用单独的系列,将 grouping 设置为false,将x值虚拟以悬停在实际类别值周围 .

    plotOptions: {
      series: {
        grouping: false,
        pointRange: 0.2
      }
    },    
    series: [{
      name: 'Group A',
      data: [[-0.25,5],[0,7],[0.25,6]]
    }]
    

    例:

  • 0

    最后,我发现没有开箱即用的方法来做到这一点 . 但我找到了一个有效的解决方案,如下所示:

    • 将每个栏与一个系列相关联(参见上面提到的小提琴)

    在legendItemClick中

    • 手动显示或隐藏与点击的图例项目关联的系列

    • 给定每个类别的可见性,重新计算每个可见类别的索引,并使用与其关联的类别的新索引更新每个可见的条形系列数据[0] .x(使用point.update())

    • 调用xAxis.setCategories,其中包含您希望当前可见的类别列表

    • 使用类别索引的新极值调用xAxis.setExtremes

    这是一个非常简单的例子:

    legendItemClick = function (e) {
            var seriesClicked = e.currentTarget;
            var chart = seriesClicked.chart;
            var axis = chart.xAxis[0]
    
        if (seriesClicked.visible) {
            seriesClicked.hide();
            chart.series[2].data[0].update( { x: 1 });
            axis.setCategories(['Group A', 'Group C'], false)
            axis.setExtremes(0, 1, true)
    
        } else {
            seriesClicked.show();
            chart.series[2].data[0].update( { x: 2 });
            axis.setCategories(['Group A', 'Group B', 'Group C'], false)
            axis.setExtremes(0, 2, true)
        }
        return false;
    }
    

    小提琴:http://jsfiddle.net/dkent600/e6357a22/17/

相关问题