我正在玩圖表繪製13 g元素,每個元素都帶有一個圓圈。然後我在控制檯中執行以下操作。覈實給我副本包含13個元素,短小 7和longy 20.當然屏幕上沒有任何變化。D3 SVG圖表中的現有元素沒有更新 - 全部被視爲退出()和輸入()集合
var gees = d3.select("#graph2").selectAll("g");
var copy = gees.data();
var shorty = copy.slice(0,7)
var longy = shorty.concat(copy);
現在,我執行以下操作,我期望數據集中的差異,但不是我看到的方式。如果我們用13個元素和減6(與短小一樣),輸入()設置應該爲0,出口()設置應該是6,我的方式。但是,我的控制檯自豪地顯示它是7和13.同樣,如果我們從13個元素開始並添加7(如longy的情況),enter() set應該是7並且exit( )應該是0,據我所知。再一次,我的控制檯讓我驚訝,聲稱這是20和13
gees.data(shorty).enter()
gees.data(shorty).exit()
[數組[7]
[數組[13]
gees.data(longy).enter()
gees.data(longy).exit()
[陣列[012]]
[Array [13]]
我畫的結論是:所有的-exisint前元素被丟棄(因此放在退出()集)和添加的數據被視爲一個全新的一堆(因此被視爲進入()組)。我可以忍受,但我所讀過的文章指出,每一個和每個組運行應依靠:
- 更新的東西,在數據()
- 在附加的東西回車()
- 在出口(去除填充)
@Fawzan的問題是*,爲什麼我會設置爲7和13的尺寸時,預計集大小爲0和6?*(第一個變化的較小的一組)。等同於另一種情況。在我看來,在非進入和非出口設置中沒有任何東西。 –
@Fawzan他混淆了數組。我昨天偶然發現了[你的回答](http://stackoverflow.com/a/35101354/1675891)。這就是爲什麼我很快得到答案,所以你在那裏得到+1作爲信用。 –