我需要使用D3.scale将字符串映射到颜色。但我不确定哪种尺度最符合我的需要。
输入将是许多字符串,其数量在前面未确定。所以我想我不能使用.domain来指定输入字符串。 输出将是颜色。我希望范围可以是[“hsl(150,80%,80%)”,“hsl(250,30%,40%)”]。
我试过
d3.scale.ordinal()
.range(["hsl(150,80%,80%)", "hsl(250,30%,40%)"])
.interpolate(d3.interpolateHcl);
但它不起作用。
非常感谢任何帮助。
答案 0 :(得分:0)
const domain = Array.from(new Set(someArray))
const index = domain.indexOf(x)
const col = d3.interpolateSinebow(index/domain.length); //give me 0 to 1 values
console.log(col) // rgb(123, 123, 123)
足够好吗?