d3:具有超过 2 种颜色的数组的颜色范围
d3: Color Range with an array with more than 2 colors
我正在尝试根据 .json 文件中的属性值对地图中的图层进行着色(使用 MapBox
)。但是,该代码仅适用于传递的 2 个颜色值。下面是我的颜色编码片段。
var color =
d3.scale.linear()
.domain(range)
.range([#F0F0D0', '#228B22]);
如果我这样做会失败
var color =
d3.scale.linear()
.domain(range)
.range(['930F16', '#F0F0D0', '#228B22]);
地图将显示前两种颜色的范围。
如果我想制作超过两种的颜色范围,我该如何扩展?例如,如果我希望下端为 red
,中间分位数为 white
,顶部分位数为 green
?
是这样的吗?
var color = d3.scale.linear()
.domain([-1, 0, 1])
.range(['#930F16', '#F0F0D0', '#228B22']);
对于负值,这将在“#F0F0D0”和“#930F16”之间进行插值,对于正值,这将在“#F0F0D0”和“#228B22”之间进行插值。
希望对您有所帮助!
range()
输入数组中的元素数被截断以匹配 domain()
中的元素数。要使用三种颜色,您还需要将比例尺的 domain()
设置为具有三个元素。这就是您在代码段中(令人困惑地)调用 range
(变量)的内容。
var color =
d3.scale.linear()
.domain([d3.min(data), (d3.max(data)-d3.min(data))/2, d3.max(data)])
.range(['#930F16', '#F0F0D0', '#228B22']);
我正在尝试根据 .json 文件中的属性值对地图中的图层进行着色(使用 MapBox
)。但是,该代码仅适用于传递的 2 个颜色值。下面是我的颜色编码片段。
var color =
d3.scale.linear()
.domain(range)
.range([#F0F0D0', '#228B22]);
如果我这样做会失败
var color =
d3.scale.linear()
.domain(range)
.range(['930F16', '#F0F0D0', '#228B22]);
地图将显示前两种颜色的范围。
如果我想制作超过两种的颜色范围,我该如何扩展?例如,如果我希望下端为 red
,中间分位数为 white
,顶部分位数为 green
?
是这样的吗?
var color = d3.scale.linear()
.domain([-1, 0, 1])
.range(['#930F16', '#F0F0D0', '#228B22']);
对于负值,这将在“#F0F0D0”和“#930F16”之间进行插值,对于正值,这将在“#F0F0D0”和“#228B22”之间进行插值。
希望对您有所帮助!
range()
输入数组中的元素数被截断以匹配 domain()
中的元素数。要使用三种颜色,您还需要将比例尺的 domain()
设置为具有三个元素。这就是您在代码段中(令人困惑地)调用 range
(变量)的内容。
var color =
d3.scale.linear()
.domain([d3.min(data), (d3.max(data)-d3.min(data))/2, d3.max(data)])
.range(['#930F16', '#F0F0D0', '#228B22']);