作为D3.js的新手,这是一个困扰我一段时间的棘手问题。我正在使用SVG rect
元素绘制一系列条形图,相关对象是(在d3.csv()
函数外定义)
var bars = g.selectAll(".bar rect")
.data(data)
.enter()
.append("rect")
.attr("class", "bar rect");
.attr("x", function(d) { return x(d.date)})
.attr("y", function(d) { return y(max(d.open, d.close));})
.attr("width", 2*tickWidth/3)
.attr("height", function(d) { return y(min(d.open, d.close)) - y(max(d.open, d.close));})
.attr("fill", function(d) { return d.open > d.close ? "red" : "green" ;});
但是,使用文件中的d3.csv()
函数加载数据。其他设置(如x,y等)与this example中的标准相同。现在,因为我想在此图表上再添加一行,并且相应地更改y轴的范围。为此,我需要重新映射y轴的范围。
这就是问题所在。首先,从上面的条形图中获取data
似乎有点困难。我使用data()
方法获取上述bars
对象的数据(在d3.csv()
函数内部,同时绘制另一条线)但它给了我一个空数组。其次,我不知道如何将新设置的y范围关联到bars对象而不再调用data()
方法,因为每次我将新映射的y范围提取到bar
对象时,它再次绘制。
我绝对不了解d3分离风格和数据的理念。我们将非常感谢您的帮助。