Innanzitutto, vorrei prendere in considerazione l'utilizzo di una delle bilance Colorbrewer prontamente disponibili; vedi colorbrewer2.org. Questi sono anche disponibili come file JavaScript e CSS nel repository git di D3; vedi lib/colorbrewer. Ad esempio, se si dispone di quattro valori discreti nel dominio, e si desidera una scala di rosso-blu divergente, si potrebbe dire:
var color = d3.scale.ordinal()
.domain(["6TH", "7TH", "5TH", "4TH"])
.range(colorbrewer.RdBu[4]);
(avrete bisogno di un <script src="colorbrewer.js"></script>
da qualche parte prima di questo, anche.) ColorBrewer ha una varietà di scale cromatiche sequenziali, divergenti e categoriali ben progettate.
Se si insiste a ruotare la propria scala di colori, si consiglia vivamente di interpolare in L*a*b* or HCL color space per una percezione accurata. È possibile farlo utilizzando d3.interpolateLab o d3.interpolateHcl. Ad esempio, d3.interpolateLab("red", "blue")(.5)
restituisce un colore a metà tra il rosso e il blu.
Per calcolare i colori per l'intervallo della scala ordinale, è possibile utilizzare un interpolatore oppure è possibile trovare una scala lineare temporanea più comoda.Ad esempio:
var categories = ["6TH", "7TH", "5TH", "4TH"];
var color = d3.scale.ordinal()
.domain(categories)
.range(d3.range(categories.length).map(d3.scale.linear()
.domain([0, categories.length - 1])
.range(["red", "blue"])
.interpolate(d3.interpolateLab)));
: La lib di Colorbrewer di D3 è stata spostata nel repository [d3-scale-chromatic] (https://github.com/d3/d3-scale-chromatic). – danasilver