簡體   English   中英

在D3中使用過渡更新堆積的條形圖

[英]Update stacked bar chart with transition in D3

使用此處列出的示例: http : //bl.ocks.org/anotherjavadude/2940908在獲得一些基礎知識的成功之后,我一直在繞D3前進。

我建立了一個堆積圖( Fiddle )並設法使我的初始過渡工作,添加新數據時出現了問題。

我收到的錯誤是“未捕獲的TypeError:無法讀取未定義的屬性'length'”

這是它掉落的.data():

d3.select('rect.stacks')
    .data(function(d){return d;}) // error occurs here
    .attr("x", function(d) { return x(d.x); })
    .attr("width", x.rangeBand()-50)
    .transition()   
    .attr("y", function(d) { return -y(d.y0) - y(d.y); })
    .attr("height", function(d) { return y(d.y); })       
    .duration(1000);  

出於任何原因,嘗試更新通過的3D數組時,其格式都不正確,我不確定為什么。

我嘗試將塊提取到函數中,並用盡我的知識去嘗試(這將解釋所有的怪異現象或意大利面條)。

謝謝!

更新時,由於執行不同的選擇,因此您失去了g.valgrouprect.stacks之間的父級關系。

您可以嘗試這樣做以保留子選擇並保存數據:

d3.selectAll("g.valgroup")
    .data(stacked)
.selectAll('rect.stacks')
    .data(function(d){return d;})  
    .attr("x", function(d) { return x(d.x); })
    .attr("width", x.rangeBand()-50)
    .transition()   
    .attr("y", function(d) { return -y(d.y0) - y(d.y); })
    .attr("height", function(d) { return y(d.y); })       
    .duration(1000); 

-> https://jsfiddle.net/y8ezx2fh/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM