d3.js 地图的颜色范围未按域范围显示

d3.js Color range for map not displaying as per domain range

这是我为地图设置颜色范围的方式

    var color = d3.scaleThreshold()
    .domain([1,1000])
    .range(d3.schemeCategory20b);

我在域中设置的数据值不超过 1000,因此我在设置此范围时给出了 1 到 1000 的域范围,它没有按预期显示颜色,就像我想用颜色显示我的地图像域名 范围 [1,50] -> 绿色 & [51,250] -> 黄色,[251,700] -> 深绿色 & [701,1000] -> 黄色 我怎样才能做到这一点?有什么想法吗?

在阈值尺度中,如果范围有 N 个值,则域必须有 N - 1 个值。

因此,请准确地告诉体重秤您在问题中告诉我们的内容:

var color = d3.scaleThreshold()
    .domain([50, 250, 700])
    .range(["green", "yellow", "darkgreen", "yellow"]);

这是一个基本演示,将鼠标悬停在每个矩形上以查看其值:

var body = d3.select("body");
var color = d3.scaleThreshold()
  .domain([50, 250, 700])
  .range(["green", "yellow", "darkgreen", "yellow"]);
body.selectAll(null)
  .data(d3.range(51).map(d => d * 20))
  .enter()
  .append("div")
  .style("background-color", d => color(d))
  .on("mouseover", function(d) {
    console.log("value: " + d + ", color: " + color(d))
  })
div {
  min-width: 5px;
  min-height: 20px;
  display: inline-block;
  margin: 1px;
  border: 1px solid gray;
}

.as-console-wrapper { max-height: 30% !important;}
<script src="https://d3js.org/d3.v4.min.js"></script>