1
我试图根据this example创建一个多折线图,并且需要根据用户选择动态绘制多条线。该代码使用下面的方法来创建行:动态绘制多条折线图
var valueline = d3.svg.line()
.x(function(d) {
return x(d.date);
})
.y(function(d) {
return y(d.primary);
});
然后创建调用valueline()
创建路径:
svg.append("path")
.attr("class", "line")
.attr("d", valueline(data));
我使用JSON来呈现图表和有对象的简单数组与关键字 - 值对:
data = [{
"date": "1-Apr-11",
"primary": 58.13,
"secondary": 28.13
}, {
"date": "1-May-11",
"primary": 53.98,
"secondary": 35.13
}];
当前代码只能绘制primary
一行。任何人都可以请建议一个动态的方式来绘制多行?我尝试创建第二个valueline2()
函数来创建第二行,然后使用valueline2()
行创建另一个svg.append("path")
以创建路径。所以线条越多,代码就会越多,所以我认为这不是一个更好的方法。请帮助,真的卡住了。
把循环内的append()方法是非常糟糕的做法。查看Mike Bostock创建的D3js多线图。他从不使用这种方法。无论如何,我通过将数据转换为不同的格式解决了这个问题(从Mike Bostock的多线图设计中获得帮助)。 – Rishabh