Javascript 在d3.js中y轴范围更改时重新缩放条形图

Javascript 在d3.js中y轴范围更改时重新缩放条形图,javascript,d3.js,Javascript,D3.js,作为D3.js的新手,这是一个棘手的问题,让我困扰了一段时间。我正在使用SVGrect元素绘制一系列条形图,关联的对象是(在d3.csv()函数之外定义) 但是,使用文件中的d3.csv()函数加载数据。其他设置(如x、y等)与中的设置相当标准。现在,因为我想在这个图表上再加一条线,y轴的范围也相应地改变了。为此,我需要重新映射y轴的范围 问题来了。首先,从上面的条形图中获取数据对我来说似乎有点困难。我使用data()方法获取上述条对象的数据(在绘制另一行时在d3.csv()函数中),但它给了我

作为D3.js的新手,这是一个棘手的问题,让我困扰了一段时间。我正在使用SVG
rect
元素绘制一系列条形图,关联的对象是(在
d3.csv()函数之外定义)

但是,使用文件中的
d3.csv()
函数加载数据。其他设置(如x、y等)与中的设置相当标准。现在,因为我想在这个图表上再加一条线,y轴的范围也相应地改变了。为此,我需要重新映射y轴的范围

问题来了。首先,从上面的条形图中获取
数据对我来说似乎有点困难。我使用
data()
方法获取上述
对象的数据(在绘制另一行时在
d3.csv()
函数中),但它给了我一个空数组。其次,我不确定如何将新设置的y范围与bars对象关联,而无需再次调用
data()
方法,因为每次我将新映射的y范围提取到
bar
对象时,它都会再次打印


我对d3分离风格和数据的理念肯定缺乏很好的理解。我们将非常感谢你的帮助

你能给我们看一下你的全部代码吗?我有点傻。事实证明,我可以使用
y.domain()[]
获取图表当前y轴的范围。这解决了问题,而无需通过数据确定最小值和最大值。
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" ;});