[英]How to change the data of an existing D3 visualization and perform a transition?
我使用以下代碼創建了一個可視化元素,它按預期顯示了所有內容:
var linkTopicComments = vis.selectAll(".linktopics")
.data(topicLinks)
.enter().append("path")
.attr("class", "linktopics")
.attr("d", topicDiagonal)
.attr("opacity", "0.3");
后來,我用下面的代碼更新了關聯數據,只是簡單地改變了x坐標的值。在這段代碼topicLinks
是全局的, vis
是我的可視化
for (var i = 0; i < topicLinks.length; i++) {
topicLinks[i].source.x-=25;
}
最后,我使用以下代碼更新了可視化:
var linkTopicComments = vis.selectAll(".linktopics")
.data(topicLinks)
.transition();
不幸的是沒有更新。 知道如何解決這個問題嗎?
在 D3 中, selection.transition
創建從初始 state 到最終 state 的過渡。 例如...
selection.attr("foo", 1)//initial state
.transition()
.attr("foo", 20)//final state
... 將屬性foo
從 1 轉換為 20。順便說一下,由於我們沒有設置任何持續時間,因此將應用默認的 250 毫秒持續時間。
在你的情況...
var linkTopicComments = vis.selectAll(".linktopics")
.data(topicLinks)
.transition();
...您沒有進行任何過渡,因為在transition()
之后的鏈中沒有任何內容,而分號證實了這一點。
解決方案非常簡單:明確告訴 D3 你想要轉換什么。 例如:
var linkTopicComments = vis.selectAll(".linktopics")
.data(topicLinks)
.transition()
.attr("d", topicDiagonal);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.