我从一个数据集创建了一个条形图。我还创建了一个圆形对象,我想将其用作按钮。在圆圈中的 mousedown 上,我想更改用于条形图的数据集,然后重新绘制图形。我尝试将 mousedown 处理程序添加为函数,但单击时数据集不会更改。这是矩形的原始 selectAll:
svg.selectAll("rect")
.data(data)
.enter()
.append("rect")
.attr("x", function(d, i) {
return i * (width / data.length);})
.attr("y", function(d) {
return 100 - d ;})
.attr("width", function(d,i) {
return barWidth ;})
.attr("height", function(d) {
return 150 - (100 - d);
});
这是我在下面渲染的圆圈(我想成为一个切换按钮):
svg.append("circle")
.attr("cx", 525)
.attr("cy", 275)
.attr("r", 45)
.attr("stroke", "white")
.attr("fill", "#660066")
.attr("opacity", "0.7")
.on("mouseover", function(){d3.select(this)
.style("opacity", "1");
})
.on("mouseout", function(){d3.select(this)
.style("opacity", "0.7");
})
.on("mousedown", function() {
// handle event here
});
我尝试将 svg.selectAll("rect") 直接复制到 mousedown 函数中,并将数据重新绑定到不同的预定义数据集。我还尝试在 .on“mousedown”函数中重新定义该数据集,但条形图仍然没有重绘。将 mousedown 分离为我在 svg.append("circle") 之外调用的单独函数也不起作用。我的猜测是问题在于我试图通过处理另一个绘制对象来更改一个绘制对象,但我觉得必须有某种方法来解决这个问题。任何意见是极大的赞赏。