具有多个系列的Highcharts树图:让它们全部显示在图例中

时间:2019-05-23 19:40:56

标签: javascript highcharts

因此,我有6个系列,它们在单个highcharts树形图中使用,每个系列都是它自己的较小的树形图。我无法使该系列的每个名称都出现在图例中,因为showInLegend属性位于data属性之上。

我尝试了两种不同的配置。首先:系列设置为我的chartData变量,如下所示:     [{       名称:键,       堆栈:键,       id:键,       showInLegend:是的,       颜色:颜色[键],       数据:切片     },     {...}] 依此类推。这给了我一个单一的树形图,其中每个系列都位于前一个系列的下方,也就是它们彼此堆叠。

如果将它们全部合并为一个数据数组,则可以获得所需的正确图表格式,其中每个单独的系列均按颜色/父级等进行分组。这是使用无数据的数据点完成的,如下所示: {    名称,    ID,    showInLegend,    颜色 }

,那么其他每个点将是:    {           名称           父母           值         }

然后将这个大数据数组提供给一个序列数组,如下所示: [{  类型:“ treemap”,  layoutAlgorithm:“平方”,  数据:上方的dataArray, }]

同样,我希望图表是多个树状图,而不是一个卡在另一个树上。但是我也需要图例来显示所有这些系列的名称

1 个答案:

答案 0 :(得分:0)

您可以使用非官方的legendType: 'point'属性并删除afterGetAllItems图例事件中的不必要元素:

var H = Highcharts;

H.addEvent(H.Legend, 'afterGetAllItems', function(e) {
    e.allItems.splice(2, 6);
});

H.chart('container', {
    series: [{
        legendType: 'point',
        showInLegend: true,
        ...
    }]
});

实时演示: https://jsfiddle.net/BlackLabel/gp2qmvac/

API参考: https://api.highcharts.com/highcharts/series.treemap.showInLegend

文档: https://www.highcharts.com/docs/extending-highcharts