Estoy usando D3.js y tengo problemas para configurar un diseño apilado para un gráfico de área con varias series. Tengo dos estructuras posibles de mis datos (si eso ayuda). Uno de ellos es los datos en bruto alimentados a la secuencia de comandos, en esta estructura:Área apilada en D3.js
var data = [{key: 'Group1', value: 37, date: '04/23/12'},
{key: 'Group2', value: 12, date: '04/23/12'},
{key: 'Group3', value: 46, date: '04/23/12'},
{key: 'Group1', value: 32, date: '04/24/12'},
{key: 'Group2', value: 19, date: '04/24/12'},
{key: 'Group3', value: 42, date: '04/24/12'},
{key: 'Group1', value: 45, date: '04/25/12'},
{key: 'Group2', value: 16, date: '04/25/12'},
{key: 'Group3', value: 44, date: '04/25/12'},
{key: 'Group1', value: 24, date: '04/26/12'},
{key: 'Group2', value: 52, date: '04/26/12'},
{key: 'Group3', value: 64, date: '04/26/12'}]
segunda es una estructura anidada, creado mediante este código:
pData = d3.nest()
.key(function(d) { return d.key; })
.map(data);
Resultando en esta estructura:
pData = {Group1: [{date: 04/23/12, key: "Group1", value: 37},
{date: 04/24/12, key: "Group1", value: 32},
{date: 04/25/12, key: "Group1", value: 45},
...],
Group2: [{date: 04/23/12, key: "Group2", value: 12},
{etc, etc, etc}],
GroupX: [...] }
Mis preguntas son: ¿Cómo configuro un generador d3.layout.stack()
, usando una de las estructuras de datos anteriores (o alguna variación), para crear una cadena apilada UCTURA para mis datos tal que puedo pasarlo a un generador de área similar a esto:
var areaGenerator = d3.svg.area()
.interpolate('monotone')
.x(function(d) { return x(d.date); })
.y0(h)
.y1(function(d) { return y(d.value); });
increíblemente útil. ¡Gracias por la respuesta! – mbeasley
¡Muy útil, gracias! Merece la pena señalar noobs de Javascript (como yo!) Que el + antes del d.valor (en la devolución de datos) se convierte en un número - ver [aquí] (http://xkr.us/articles/javascript/unary -añadir/). En la devolución de llamada, ¿cómo se asignan los valores y0? Usé el código [this] (http://pastebin.com/amjkBRYV) para inspeccionar, y obtuve [este] (http://i.imgur.com/lQFyJNL.png) salida. Cada objeto se registra dos veces, antes y después de la edición. Antes, solo contiene datos de la csv; luego, tiene un "y0 = 0", como configuré, pero (cuando se profundiza en Chrome) también una y, y una y0 distinta de cero. ¿Que esta pasando ahí? – scubbo
(Como referencia, estoy tratando de manipular el valor y0 para que el gráfico muestre totales acumulados, en lugar de valores en cada punto) Lo siento si recibe varias notificaciones de mis ediciones anteriores: no está acostumbrado al estilo StackOverflow, hizo algunas errores! – scubbo