用与线条相同的颜色填充多折线图上的点
fill points on the multi-line chart with the same color as lines
在条形图上,线条上的点是蓝色的(工作样本),尽管有一个函数可以用线条的颜色填充这些点
// 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); });
知道为什么它不起作用吗?
提前感谢!
调试
要调试这样的问题,请在设置fill
属性的函数中使用console.log
函数:
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
功能将正常工作。
修正了示例来说明解决方案。
根据最初的答案,您有不同的与圆圈相关的数据,它们是d.value
而不是d.name
此外,您的颜色范围声明中缺少一个哈希符号:var color = d3.scale.ordinal().range(["c9bebe", "#787676", "#4d4dff"]);
,显然应表示为:
CCD_ 10。
我可以在所有这些讨论中补充的一件事是,为了简单明了,您可以直接将您的颜色与包含circles
的组相关联。因此,您可以将样式添加到组中,而不是向circle
元素添加样式:
var point = column.append("g")
.attr({
"class": "line-point",
"fill": function(d) { return color(d.name); }
});
在代码的不同点上的console.log
是一种很好的方法来发现问题。
JSFiddle调整
相关文章:
- 用与线条相同的颜色填充多折线图上的点
- 跟踪jqplot垂直折线图的鼠标位置
- Morris.js折线图x轴标签在调整大小后消失
- Chart.js V2折线图缺点
- 将直流图表库中的折线图缩放限制为小时
- 如何用d3.js绘制折线图
- 部分填充区域的折线图
- 将时间缩放添加到折线图(Chart.js)
- Chart.js折线图的0线型
- d3绘制动画折线图的基本示例
- Javascript FLOT组合条形图;以x轴为字符串的折线图
- 如何在折线图中显示最近的值
- charts js更改折线图轴的字体大小/颜色和背景线
- 从特定系列的谷歌可视化折线图中删除悬停工具提示
- 折线图上的渐变填充(高图表)
- 无法填充Google Graph折线图
- gRaphael折线图:用JSON数据填充弹出标签而不是x&y坐标
- 删除c3折线图的填充
- 使用Canvas的SVG可视化-折线图填充黑色矩形,"ERROR: Element 'parserer
- 从csv填充折线图