Я разрешаю пользователям выбирать одну из четырех числовых рядов из выпадающего списка, чтобы управлять раскраской кругов в пузырьковой диаграмме. (Есть аналогичные выпадающие для радиуса, х и у.)dc.js, создавая цветовой диапазон между двумя цветами
d3.select("select#colour").on('change',function(d) {
var tempIndex = this.selectedIndex;
yearlyBubbleChart.colorAccessor(function (p) {
return p.value[optionArray[0][tempIndex]];
});
yearlyBubbleChart.colors(colorbrewer[optionArray[7][tempIndex]][optionArray[8][tempIndex]]);
yearlyBubbleChart.colorDomain([optionArray[5][tempIndex][0], optionArray[5][tempIndex][1]]);
});
Чтобы сделать это, я использую colorAccessor, цвета и colorDomain, в таком порядке. (В некоторых случаях я заметил, что порядок этих трех вопросов.) Я бы хотел, чтобы пользователи могли выбирать минимальные и максимальные цвета и управлять цветом. Для этого мне нужно окрасить пузырьки только из двух цветов, например. [ 'Белый', 'синий']. Более высокие числовые значения будут пропорционально более синими.
Кажется, очень легкая вещь, но я не могу ее решить. Поставка массива из двух цветов обычно используется для чередования, а в пузырьковой диаграмме минимальный пузырь белый, а остальные - синий. Как получить непрерывный цветовой диапазон, вводя только два цвета?
Thanks
Ключевым моментом здесь является то, что [colorMixin.colors()] (http://dc-js.github.io/dc.js/docs/html/dc.colorMixin.html #colors__anchor) может принимать любые масштабы d3. Если вы передадите ему массив цветов, он создаст [порядковый масштаб] (https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md#ordinal) для вас, но вы можете использовать линейную шкалу, как показано ниже @Paul, или, возможно, [шкала квантования] (https://github.com/d3/d3-3.x-api-reference/blob/master/Quantitative- Scales.md # quantize-scale), если вы сопоставляете непрерывный домен с набором дискретных цветов. – Gordon
И да, если вы [посмотрите на источник для цветового mixin] (https://github.com/dc-js/dc.js/blob/develop/src/color-mixin.js), вы увидите почему вам нужно называть «цвета» перед «colorDomain» - первый заменяет масштаб, последний устанавливает параметр в текущем масштабе. – Gordon