当y轴范围在d3.js中变化时,重新缩放条形图

时间:2017-03-02 13:52:24

标签: javascript d3.js

作为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分离风格和数据的理念。我们将非常感谢您的帮助。

0 个答案:

没有答案