在D3 Streamgraph stack.values([存取])的正确用法?(Correct u

2019-06-25 10:32发布

我想创建与每使用值存取层附加数据的D3 streamgraph图表,这表现在D3 API参考和在堆栈溢出这个问题 。

标题追加罚款,但不会出现附加变量的值。 什么任何想法可能是想错了?

我是新来的D3,所以我敢肯定,这是简单的。 代码如下。

var layers = [
  {
    "name": "apples",
    "values": [
      { "x": 0, "y":  91},
      { "x": 1, "y": 290}
    ]
  },
  {  
    "name": "oranges",
    "values": [
      { "x": 0, "y":  9},
      { "x": 1, "y": 49}
    ]
  }
];

var     m = 2; // number of samples per layer
var width = 960,
    height = 500,
    mx = m - 1,
    my = 350;

var stack = d3.layout.stack()
    .offset("wiggle")
    .values(function(d) { return d.values; });

var area = d3.svg.area()
    .x(function(d) { 
        return d.x * width / mx; 
    })
    .y0(function(d) { 
        return height - d.y0 * height / my; 
    })
    .y1(function(d) { 
        return height - (d.y + d.y0) * height / my; 
    });

var vis = d3.select("#chart")
  .append("svg")
    .attr("width", width)
    .attr("height", height);

vis.selectAll("path")
    .data(stack(layers))
  .enter().append("path")
    .attr("d", area)
  .append("title")
    .text(function(d) { return d.name; });

Answer 1:

堆栈布局知道你所指定的值访问,但该地区发电机没有。 所以,你必须通过d.values而不是d的区域生成,就像这样:

.attr("d", function(d) { return area(d.values); })


文章来源: Correct usage of stack.values([accessor]) in D3 Streamgraph?