首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >D3堆栈布局问题

D3堆栈布局问题
EN

Stack Overflow用户
提问于 2015-12-12 00:29:07
回答 1查看 79关注 0票数 1

在将数据动态添加到堆栈图时,我遇到了问题。看看这些例子。

工作:https://jsfiddle.net/dL5t9c0n/8/

堆栈图是用数据初始化的,2个堆栈。

不工作:https://jsfiddle.net/fsne8jrL/6/

按下按钮以附加图层。

初始化后,我尝试将数据附加到图形中。第一个堆栈附加的很好。然而,第二个堆栈变得疯狂了。第二层的y0值看起来很好。看上去第二层正把x轴往下推。

我很确定这是因为我做错了数据连接,但我不知道为什么。

这是不工作的小提琴的数据连接代码。

代码语言:javascript
复制
var updateData = d3.select(".parts-comparison-graph").selectAll("path")
                  .data(stack(layers));
                console.log(updateData);
                updateData.transition()
                  .duration(2500)
                  .attr("d", function(d){return area(d.values)})
                  .each("end",function(){svg.attr('pointer-events', 'auto')});
                updateData.style("fill", function(d) { return d.color; });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-12 02:31:34

您缺少了这个for循环,这将生成与测试数据长度一样多的路径。

在你的情况下,你只是在走一条路.

代码语言:javascript
复制
var currentYear = parseInt(new Date().getFullYear());
            var zeroLayer = [];
            for (var j =0; j < test.length; j++){
               var zeroSegment = {};
              zeroSegment.values = [];
              for(var i=2000;i<=currentYear;i++){
                  zeroSegment.values.push({"x":new Date(i,0,1),"y":0,"y0":0});
              }
              zeroLayer.push(zeroSegment);//only one path gets inserted
            }

在修正后的代码中,测试数据有6个数据,因此创建了6个zeroLayers。

代码语言:javascript
复制
for (var j =0; j < test.length; j++){
               var zeroSegment = {};
              zeroSegment.values = [];
              for(var i=2000;i<=currentYear;i++){
                  zeroSegment.values.push({"x":new Date(i,0,1),"y":0,"y0":0});
              }
              zeroLayer.push(zeroSegment);//test data has 6 data so 6 zeroLayers be created
            }

工作代码这里

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34234747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档