javascript - 用与线条相同的颜色填充多线图上的点

标签 javascript d3.js

在条形折线图上,线条上的点是蓝色的 ( working sample ),尽管有一个函数可以用线条的颜色填充点

// circle points | кружочки на лініях

    point.selectAll("circle") 
    .data(function(d){ return d.values; })
    .enter().append("circle")
    .attr("cx", function(d) {
        return x(d.date) + x.rangeBand()/2;
      })
     .attr("cy", function(d, i) { return y(d.value); })
     .attr("r", 3)
     .style("fill", function(d) { return color(d.name); });

知道为什么它不起作用吗?

提前致谢!

最佳答案

调试

要调试此类问题,请在函数内使用 console.log 函数设置 fill 属性:

style("fill", function(d) { 
    console.log('d is', d)
    return color(d.name);
});

您会看到没有d.name。此属性未传递给 point:

// circle points | кружочки на лініях

    point.selectAll("circle") 
    .data(function(d){ return d.values; }) // point has access to d.values, not to d.name.

解决方案

要解决该问题,您可以执行以下操作:

在值数组的每个项目中添加name属性

point.selectAll("circle")
  .data(function(d) {

    // add name inside each value inside `d.values`
    d.values.forEach(function(value) {
      value.name = d.name
    })

    return d.values;
  })

然后您的 fill 函数将正常工作。

Fixed example来说明解决方案。

关于javascript - 用与线条相同的颜色填充多线图上的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37320899/

相关文章:

javascript - 在 D3 中动态更新多个图表

javascript - 在纯 CSS 中仅缩放图像的特定部分

javascript - 如何覆盖/扩展 Chrome 的 JavaScript 中的 ReferenceError?

javascript - D3.js 从数组的数组中选择最小/最大值(嵌套 d3.extent)

d3.js - 在 d3.js 或 nvd3.js 线图中选择一条线

javascript - d3 更新图形中的路径和圆圈

javascript - 使整个 div 可排序

javascript - 计算 safari 和 chrome 中 svg 路径的 getBBox() 中包含的控制点

javascript - 使用 CSS 和 JQuery 悬停时显示信息框

d3.js - 如何在 d3.json 命令中使用 d3.min 和 d3.max