Можете ли вы добавить легенду к пузырьковой диаграмме dc.js? - PullRequest
0 голосов
/ 23 мая 2018

Можно ли сделать легенду для пузырьковой диаграммы?

Кто-то задавал этот вопрос несколько лет назад, но я не могу найти для него хорошего ответа.У кого-нибудь есть пример, где они создали легенду для пузырьковой диаграммы, используя dc.js?

1 Ответ

0 голосов
/ 25 мая 2018

Вы можете вручную добавить поддержку легенды к любой диаграмме, у которой ее еще нет, определив функцию .legendables().Хотя многие диаграммы (например, круговые, линейчатые, линейчатые, гистограммы, солнечные лучи) поддерживают его, по умолчанию возвращается пустой массив.

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

В качестве примера я поместил пузырьковую диаграмму из dc.js фондового примера *1007* в скрипку и пропатчил в legendables вот так:

 yearlyBubbleChart.legendables = function() {
   return [500, 250, 0, -250, -500].map(function(v) { // 1
     return {
       chart: yearlyBubbleChart, // 2
       name: v, // 3
       color: yearlyBubbleChart.getColor({value: {absGain: v}}) // 4
     };
   });
 };
  1. Укажите конкретные значения, которые вы хотите отобразить в легенде
  2. Легенде нужна ссылка на диаграмму
  3. Укажите метку для каждого значения - я просто использую само значение
  4. Дайте цвет.Это самая сложная часть.Вы можете просто указать цвет напрямую, но я думаю, что лучше использовать цветовую функцию (масштаб), которую использует диаграмма.Это означает, что вы должны создавать искусственные данные, которые выглядят как значения вашей группыЗдесь colorAccessor ожидает взгляда на d.value.absGain, поэтому мы строим данные, которые выглядят следующим образом.

После этого добавление легенды на диаграмму совершенно нормально:

 yearlyBubbleChart.legend(dc.legend().x(600).y(20));

bubble chart with legend

Демонстрационная скрипка

...