使用 d3,我创建了一张条形图,显示每个条的文本值。我通过按钮的点击事件在两个不同的数据集之间进行切换。数据集在 mousedown 事件下成功更改,即条形图按照应有的大小发生变化,但是我无法更改条上的文本标签。我的 redrawText 函数没有任何作用,而再次调用 drawText 函数只会在先前的标签上重绘数据(这是可以预期的)。我正在寻找一种方法,在 removeText 函数中删除旧标签并重新绘制反映新数据的标签。
以下是我的 drawText 函数,最初被调用来创建标签。'datachoose' 是选择正确数据集以绘制的变量名称。
以下是我的mousedown事件处理程序的相关部分,用于更新数据集并重新绘制图形:
以下是我的 drawText 函数,最初被调用来创建标签。'datachoose' 是选择正确数据集以绘制的变量名称。
function drawText(dataChoose) {
new_svg.selectAll("text.dataChoose")
.data(dataChoose)
.enter().append("text")
.text(function(d) {
return d;
})
/* removed some transform code */
.attr("fill", "white")
.attr("style", "font-size: 12; font-family: Garamond, sans-serif");
}
以下是我的mousedown事件处理程序的相关部分,用于更新数据集并重新绘制图形:
.on("mousedown", function() {
if (dataChoose == data) {
dataChoose = data2;
}
else {
dataChoose = data;
}
redraw(dataChoose);
redrawText(dataChoose);
});
这是我的redrawText()函数:
function redrawText(dataChoose) {
var new_text = new_svg.selectAll("text.dataChoose")
.data(dataChoose);
new_text.transition()
.duration(1000)
.text(function(d) {
return d;
})
/* removed transform code */
.attr("fill", "white")
.attr("style", "font-size: 16; font-family: Garamond, sans-serif");
}
myText
并更新其数据。 - jhchnc