【发布时间】:2021-04-20 11:22:38
【问题描述】:
我正在尝试这个D3 heatmap example。我想实现稍微复杂一点的着色逻辑 - 所有低于 30 的值都将简单地具有红色 fill,而高于 30 的值将遵循 Blues 颜色渐变。
Related question,但这会将恒定颜色应用于域的不同部分(例如红色表示值 0 到 50,蓝色表示 50 到 100...),而不是从恒定颜色翻转到颜色渐变。我可以按照这个答案,从原始 HTML 颜色代码手动实现一个红色域和一组足够大的蓝色,但我想要一个更优雅的解决方案,为我实现蓝色的比例,特别是因为我赢了不知道可能的范围输入的最大值是多少。
我尝试将attr("fill") 行修改为以下内容,但它不起作用 - 它正确应用红色,但非红色方块只是显示为黑色,这告诉我颜色渐变没有踢出于某种原因:
...
// Build color scale
var myColor = d3
.scaleSequential()
.interpolator(d3.interpolate)
.domain([30, 100]); //Doesn't matter if I set the domain to [0.001, 100] or [30, 100]
...
.style("fill", function (d) {
if (d.value < 30) {
return "red"
} else {
return myColor(d.value);
};
})
...
【问题讨论】:
标签: javascript d3.js