在bl.ocks網站不更新「到位」的元素餅圖更新例如:是否可以創建具有對象一致性的餅圖?
http://bl.ocks.org/j0hnsmith/5591116
function change() {
clearTimeout(timeout);
path = path.data(pie(dataset[this.value])); // update the data
// set the start and end angles to Math.PI * 2 so we can transition
// anticlockwise to the actual values later
path.enter().append("path")
.attr("fill", function (d, i) {
return color(i);
})
.attr("d", arc(enterAntiClockwise))
.each(function (d) {
this._current = {
data: d.data,
value: d.value,
startAngle: enterAntiClockwise.startAngle,
endAngle: enterAntiClockwise.endAngle
};
}); // store the initial values
path.exit()
.transition()
.duration(750)
.attrTween('d', arcTweenOut)
.remove() // now remove the exiting arcs
path.transition().duration(750).attrTween("d", arcTween); // redraw the arcs
}
相反,它只是把價值的新數組作爲全新的數據並相應調整圖表的大小。
我創建了一個小提琴演示該問題很乾脆:
如果按「添加」,它隨機INT添加到陣列中:這個按預期工作。
如果按'刪除',則唯一被轉出的元素始終是進入餅圖的最後一個元素。總之,它的行爲就像一個LIFO堆棧。 預期的行爲是相關的派生弧被轉換出來。
是否可以應用對象一致性派?我也嘗試添加一個關鍵函數(沒有演示在小提琴上),但它只是打破了(奇怪的是,它適用於我的堆積圖)。
謝謝。
你可以提供你的意思一個生動的例子 - 你會想到之前和添加新元素後,看的?我不清楚 - 一個餡餅基本上代表了100%的數據集。將新元素添加到餅圖時,所有其他元素必須按比例縮小,反之亦然。 – mccannf
嗨mccannf,謝謝你的留言。如果你看看我的原始文章中的第二個鏈接的jsfiddle,你可以看到當按下'remove'時,你將從集合中刪除一個特定的隨機數據元素。我希望特定的弧線能夠轉換出來。相反,它用新顏色重新着色所有弧,並從最後一個輸入中過渡 - 不再反映底層數據集。出於這個原因,d3似乎也不保留指數。 –
好的,理解。像這個例子會有幫助:http://bl.ocks.org/mbostock/3888852。這裏mbostock已經爲數據頭分配了一個顏色域,還有一個關聯的圖例。 – mccannf