Ich lasse Benutzer eine von vier numerischen Serien aus einem Dropdown auswählen, um die Färbung von Kreisen in einem Blasendiagramm zu fahren. (Es gibt ähnliche Dropdown-Listen für Radius, x und y.)dc.js macht einen Farbbereich zwischen zwei Farben
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]]);
});
Um dies zu tun, ich bin mit colorAccessor, Farben und colorDomain, in dieser Reihenfolge. (Ich habe in einigen Fällen festgestellt, dass die Reihenfolge dieser drei Dinge wichtig ist.) Ich möchte, dass Benutzer Min- und Max-Farben auswählen und die Farbgebung davon steuern können. Dazu muss ich die Blasen aus nur zwei Farben, z. ['weiß Blau']. Höhere numerische Werte wären proportional blauer.
Es scheint eine wirklich einfache Sache zu tun, aber ich kann es nicht erarbeiten. In der Regel wird abwechselnd ein Array mit zwei Farben verwendet, und in einem Blasendiagramm ist die minimale Blase weiß und der Rest blau. Wie bekomme ich einen kontinuierlichen Farbbereich durch die Eingabe von nur zwei Farben?
Danke
Der Schlüssel hier ist, dass [colorMixin.colors()] (http://dc-js.github.io/dc.js/docs/html/dc.colorMixin.html #colors__anchor) kann jede Art von d3-Skala nehmen. Wenn Sie ihm ein Array von Farben übergeben, wird eine [Ordinalskala] erstellt (https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md#ordinal) für Sie, aber Sie könnten eine lineare Skala verwenden, wie @Paul unten zeigt, oder vielleicht eine [Quantisierungsskala] (https://github.com/d3/d3-3.x-api-reference/blob/master/Quantitative- Scales.md # quantisieren-skaliert), wenn Sie eine kontinuierliche Domäne einer Reihe von diskreten Farben zuordnen. – Gordon
Und ja, wenn Sie [Quelle für die Farbmischung] (https://github.com/dc-js/dc.js/blob/develop/src/color-mixin.js) sehen, werden Sie sehen Warum müssen Sie 'colors' vor 'colorDomain' aufrufen - ersterer ersetzt den Maßstab, letzterer setzt einen Parameter auf dem aktuellen Maßstab. – Gordon