javascript - 如何在不影响指定颜色顺序的情况下对 D3 中的数组进行排序

标签 javascript d3.js colors

我已经为饼图分配了颜色,效果很好 - 它们完美地遵循从蓝色到红色的搭配。我也想根据切片的顺序对其进行排序,因此我进行了以下替换。

var pie = d3.layout.pie()
  //.sort(null)
  .sort(d3.ascending)
  .value(function (d) { return d["val"]; });

尺寸现在处于所需的顺序,但颜色遵循旧的顺序,看起来不正确。我希望最大的切片颜色为红色,最小的切片颜色为蓝色。

请查看fiddle .

最佳答案

首先定义范围,如下所示:

var colors = d3.scale.linear()
    .domain([d3.min(data), d3.max(data)])
    .range(["blue", "red"]);

这里数组中的最小值将对应于蓝色。 这里数组中的最大值将对应于红色。

根据数据设置路径中的颜色,而不是根据其索引,如下所示:

grx.append("path")
  .attr("d", arc)
  .style("fill", function (d, i) {  return colors(d.data);});

工作代码here

关于javascript - 如何在不影响指定颜色顺序的情况下对 D3 中的数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38043345/

相关文章:

php - 加密 Ajax 数据的最佳且最安全的方法是什么?

javascript - 为什么 jqGrid 字段在表单编辑中隐藏,即使 "edithidden:true"包含在 colModel 中?

javascript - 如何调整open list中的 "+"标志? (CSS)

javascript - 向折线图 d3 中的不同线条添加过渡

javascript - d3.js/javascript 高效代码

javascript - D3 : almost identical codes, 不同的结果

c# - 在 C# 中,如何使用十六进制值创建 System.Drawing.Color 对象?

css - 如何设置完整组件的背景样式?

qt - 如何在 QML 中操作颜色

javascript - 请求的资源上不存在 'Access-Control-Allow-Origin' header 。因此不允许访问 Origin '...'