D3添加点到多个堆叠线图
D3 adding dots to multiple stacked line charts
我正在创建多个线形图,这些线形图由csv文件中的"symbol"堆叠。
csv是这样的:
symbol,date,price
Agency,2015/5/6,33
Agency,2015/5/7,29
Agency,2015/5/8,32
test,2015/5/6,23
test,2015/5/7,19
test,2015/5/8,22
example,2015/5/6,43
example,2015/5/7,49
example,2015/5/8,42
因此,对于csv文件中包含的每个符号,将绘制单独的图形。到目前为止,这一切都运行良好。
但是我很难在每条线上加上点。
这是创建圆点的部分(在我的小提琴中第142 - 148行):
var circles = svg.selectAll("dot")
.data(data)
.enter().append("circle")
.attr("r", 2)
.attr("cx", function(d) { return x(d.date); })
.attr("cy", function(d) { return y(d.price); })
.style("fill", "black");
但是这段代码创建了由最后一个"符号"的值填充的点,而不是为每个"符号"分开。
我在这里研究了很多关于stackoverflow,但是没有一个解决方案或提示对我有用。
在这个例子http://jsbin.com/isuris/1/edit?html,output中,我找到了这部分:
// add circles
pathContainers.selectAll('circle')
.data(function (d) { return d; })
.enter().append('circle')
.attr('cx', function (d) { return xScale(d.x); })
.attr('cy', function (d) { return yScale(d.y); })
.attr('r', 3);
所以我试着改变我的小提琴http://fiddle.jshell.net/doyL1L0p/1/的第143行,像这样:
.data(function (d) { return d; })
但这不起作用,"错误"的点消失了。
所以我试了这个:
.data(function (d) { return d.key; })
,因为单独的"symbol"-值通过使用"d.key"来显示。但是我知道我在控制台中得到这个错误:
Unexpected value NaN for attribute cx
Unexpected value NaN for attribute cy
然后我尝试修改第146和147行:
.attr("cx", function(d) { return x(d.date); })
.attr("cy", function(d) { return y(d.price); })
但没有成功。
我尝试了许多其他张贴的"解决方案"从stackoverflow和其他我在网上找到的,但都没有成功。
谁能给我一个提示,如何解决这个问题?小提琴又来了:
http://fiddle.jshell.net/doyL1L0p/1/根据你的小提琴的一些编辑,似乎他们实际上被显示…但他们在画布的范围之外。如果你看一下这里的结果,你可以看到在所有的图形中,靠近顶部的新添加的点都显示出来了。
我会看看我是否可以工作在一个适当的修复,因为显然这不是期望的行为。
看起来问题是,当你显示你的点时,你没有更新你的域,所以他们正在使用最后设置的域(因此为什么通常只显示最后一次)。此外,您在每个图上显示整个数据集的点(尽管其中大多数在域之外)。
我实际上建议尝试将您的数据解析为每个唯一符号的数组,它使事情对您来说更直接。例如,您可以简单地使用d3.extent
设置域。
我想到了几个解决方案:
-
为每个图形设置单独的轴/域。
-
将点放入每个符号的g元素中,然后通过嵌套选择向它们添加数据。
这是可行的,但是您真的应该阅读更多关于(嵌套)选择的内容。理想情况下,您可能希望单独生成每个图,使其超出其他图的范围。这个解决方案设计得很糟糕,但希望它能帮助您了解代码的工作方式。
- 如何在d3上的图形中添加放大和缩小按钮
- D3.JS向rect添加缩放和列表项
- 在链接d3强制布局中添加和删除类
- 添加新数据时D3.JS条形图列偏移量
- 如何在d3.js饼图或圆环图中添加阴影
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 向d3圆添加文本
- d3.js:如何为图上的散点添加标签
- 在d3.js圆中添加阴影效果
- 将工具提示添加到d3散点图中
- 如何将图标添加到D3轴
- 向Graph中的所有d3.js数据点添加唯一链接
- 如何在D3.js中添加箭头链接
- 在D3散点图圆上添加标签
- 如何用D3添加一个简单的圆弧
- 向 d3 图表添加时间
- 如何添加D3 Force的起始位置?
- 添加d3 svg.selectAll(".foo").style("fill",
- 添加d3标签不工作
- 在RAW中添加d3.js交互式可缩放树图