Правильное использование stack.values([accessor]) в D3 Streamgraph?

Я пытаюсь создать потоковую диаграмму D3 с дополнительными данными для каждого слоя с помощью средства доступа к значениям, как показано в Справочник по API D3 и этот вопрос в Stack Overflow.

Заголовок добавляется нормально, но, похоже, не добавляет значения. Любые идеи о том, что может пойти не так?

Я новичок в 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; });

person Derek Hill    schedule 13.06.2012    source источник
comment
Можете ли вы предоставить мне код, чтобы сделать это? Я копирую ваш код, но он не работает. Спасибо. Извините, я новичок в d3 и js.   -  person v4r    schedule 27.12.2012
comment
@DuongThang Боюсь, у меня больше нет этого под рукой. Это определенно сработало. Может быть, если вы опубликуете вопрос с вашим кодом, я смогу взглянуть на него.   -  person Derek Hill    schedule 28.12.2012


Ответы (1)


Макет стека знает указанный вами метод доступа к значениям, а генератор областей — нет. Итак, вам нужно передать d.values, а не d генератору областей, например:

.attr("d", function(d) { return area(d.values); })
person mbostock    schedule 14.06.2012
comment
Майк, ты легенда. Спасибо за помощь и спасибо за изобретение d3! - person Derek Hill; 14.06.2012