D3.js 使用d3生成12个(感知)均匀分布的颜色

D3.js 使用d3生成12个(感知)均匀分布的颜色,d3.js,color-space,hsl,D3.js,Color Space,Hsl,这个问题源自 我试图创造出12种颜色,它们在感知上彼此之间的间隔大致均匀 d3提供HSL,所以d3.HSL((i/12)*360,0.5,0.5) 然而,这对绿黄色的颜色不太有效 d3似乎提供盐酸和实验室,但我不知道如何使用这些 有什么数学方法可以使用,或者我应该实现自己的HSL色调传递函数吗?我不熟悉d3,但假设它使用典型的CIELab约定,即L:0::255,a:-100::100,b:-100::100 你可以试试 d3.lab( 128, 100 * Math.sin(2 * Math.

这个问题源自

我试图创造出12种颜色,它们在感知上彼此之间的间隔大致均匀

d3提供HSL,所以
d3.HSL((i/12)*360,0.5,0.5)

然而,这对绿黄色的颜色不太有效

d3似乎提供盐酸和实验室,但我不知道如何使用这些


有什么数学方法可以使用,或者我应该实现自己的HSL色调传递函数吗?

我不熟悉d3,但假设它使用典型的CIELab约定,即
L:0::255,a:-100::100,b:-100::100

你可以试试

d3.lab( 128, 100 * Math.sin(2 * Math.PI * i/12), 100 * Math.cos(2 * Math.PI * i/12) )

这将创建一个视觉上统一的色轮

IMHO此问题不应被否决或关闭(无论是谁做的)。这是一个关于LAB color space的合理问题,它缺少关于d3 API参考的文档。这可能很棘手。我肯定会调查我建议你使用这个图书馆:你也可以在这里看看: