Древовидная карта Highcharts с несколькими сериями: заставить их всех показать в легенде - PullRequest
0 голосов
/ 23 мая 2019

Итак, у меня есть 6 серий, которые я использую в одной диаграмме дерева старших диаграмм, где каждая серия - это своя, меньшая карта дерева.Я не могу отобразить каждое из названий серии в легенде, потому что свойство showInLegend находится на уровень выше свойства данных.

Я пробовал две разные конфигурации.Во-первых, для ряда установлена ​​переменная моей chartData, которая выглядит следующим образом: [{name: key, stack: key, id: key, showInLegend: true, color: colors [key], data: sliced}, {...}]И так далее.Это дает мне одну диаграмму древовидной карты с каждой серией под предыдущей, то есть они расположены друг над другом.

Если я объединю их все в один массив данных, я смогу получить нужный мне формат диаграммы, где каждая отдельная серия сгруппирована по цвету / родителю и так далее.Это было сделано с использованием точек данных без данных, например: {name, id, showInLegend, color}

, и каждая из остальных точек будет: {name parent value}

Thisбольшой массив данных затем передается в последовательный массив, который выглядит следующим образом: [{type: 'treemap', layoutAlgorithm: 'squarified', data: dataArray сверху,}]

Опять же, я хочу, чтобы диаграмма быланесколько древовидных карт, ни одна не застряла поверх другой.Но мне также нужна легенда, чтобы показать имена всех этих серий

1 Ответ

0 голосов
/ 24 мая 2019

Вы можете использовать неофициальное свойство 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...