我的标签更新选择出了什么问题
what's wrong with my label update selection
我有一个条形图,我通过单击关联 table 的行来更新它。除了标签,一切都很好。这是以下代码:
var mytext = svg.selectAll(".text").data(filterdata,function(d) { return d.date; })
mytext.enter().append("text")
mytext.exit().remove()
mytext
.attr("class","label")
.attr("x", (function(d) { return x(d.date) } ))
.attr("y", function(d) { return y(d.articles) + 1; })
.attr("dy", ".75em")
.text(function(d) { return d.articles; })
.style("text-anchor", "start")
}
输入选择工作正常(每次我点击一个新行,弹出新标签)但是旧标签不会消失。我的数据集看起来像这样:
[{articles: 1
date:Tue Apr 26 2016 00:00:00 GMT-0500 (CDT)
key:"2016-04-26T05:00:00.000Z"
values:1},
{articles:1
date:Thu Apr 28 2016 00:00:00 GMT-0500 (CDT)
key:"2016-04-28T05:00:00.000Z"
values:1},
{articles:2
date:Sun May 08 2016 00:00:00 GMT-0500 (CDT)
key:"2016-05-08T05:00:00.000Z"
values:2},
{etc...}]
能否移动退出指令:
mytext.exit().remove();
在您输入指令之前
mytext.enter().append("text")
像这样
var mytext = svg.selectAll(".text").data(filterdata,function(d) { return d.date; })
mytext.exit().remove();
mytext.enter().append("text");
mytext
.attr("class","label")
.attr("x", (function(d) { return x(d.date) } ))
.attr("y", function(d) { return y(d.articles) + 1; })
.attr("dy", ".75em")
.text(function(d) { return d.articles; })
.style("text-anchor", "start")
}
好的,我用下面的代码找到了解决方案
var mytext = svg.selectAll("text.label").data(filterdata,function(d) { return d.date; })
mytext.exit().remove()
mytext.enter().append("text")
mytext
.attr("class","label")
.attr("x", (function(d) { return x(d.date) } ))
.attr("y", function(d) { return y(d.articles) + 1; })
.attr("dy", ".75em")
.text(function(d) { return d.articles; })
.style("text-anchor", "start")
}
我将 svg.selectAll("text")
更改为 svg.selectAll("text.label")
。我猜有些东西与 attr("class","label")
和 append("text")
有关。但是如果有人能向我解释一下,我不完全理解:)谢谢
我有一个条形图,我通过单击关联 table 的行来更新它。除了标签,一切都很好。这是以下代码:
var mytext = svg.selectAll(".text").data(filterdata,function(d) { return d.date; })
mytext.enter().append("text")
mytext.exit().remove()
mytext
.attr("class","label")
.attr("x", (function(d) { return x(d.date) } ))
.attr("y", function(d) { return y(d.articles) + 1; })
.attr("dy", ".75em")
.text(function(d) { return d.articles; })
.style("text-anchor", "start")
}
输入选择工作正常(每次我点击一个新行,弹出新标签)但是旧标签不会消失。我的数据集看起来像这样:
[{articles: 1
date:Tue Apr 26 2016 00:00:00 GMT-0500 (CDT)
key:"2016-04-26T05:00:00.000Z"
values:1},
{articles:1
date:Thu Apr 28 2016 00:00:00 GMT-0500 (CDT)
key:"2016-04-28T05:00:00.000Z"
values:1},
{articles:2
date:Sun May 08 2016 00:00:00 GMT-0500 (CDT)
key:"2016-05-08T05:00:00.000Z"
values:2},
{etc...}]
能否移动退出指令:
mytext.exit().remove();
在您输入指令之前
mytext.enter().append("text")
像这样
var mytext = svg.selectAll(".text").data(filterdata,function(d) { return d.date; })
mytext.exit().remove();
mytext.enter().append("text");
mytext
.attr("class","label")
.attr("x", (function(d) { return x(d.date) } ))
.attr("y", function(d) { return y(d.articles) + 1; })
.attr("dy", ".75em")
.text(function(d) { return d.articles; })
.style("text-anchor", "start")
}
好的,我用下面的代码找到了解决方案
var mytext = svg.selectAll("text.label").data(filterdata,function(d) { return d.date; })
mytext.exit().remove()
mytext.enter().append("text")
mytext
.attr("class","label")
.attr("x", (function(d) { return x(d.date) } ))
.attr("y", function(d) { return y(d.articles) + 1; })
.attr("dy", ".75em")
.text(function(d) { return d.articles; })
.style("text-anchor", "start")
}
我将 svg.selectAll("text")
更改为 svg.selectAll("text.label")
。我猜有些东西与 attr("class","label")
和 append("text")
有关。但是如果有人能向我解释一下,我不完全理解:)谢谢