Utilizando datos anidados con D3.js

Estoy tratando de mostrar un gráfico lineal hermoso usando D3. El problema que tengo es con el formato de los datos.

Tengo los siguientes datos (como ejemplo):

var data = [
    {
      label: "name",
      data: [[14444123, 0.012321312],
             [14444123, 0.012321312],
             [14444123, 0.012321312], ...]
    },{
      label: "another name",
      data: [[14444123, 0.012321312],
             [14444123, 0.012321312],
             [14444123, 0.012321312], ...]
    }
];

Cada entrada contiene el nombre del mismo, así como un atributo de datos con una matriz de puntos (cada punto se representa como una matriz, donde el elemento [0] es x marca de tiempo y el elemento [1] es el valor).

Mi problema es que no funciona correctamente.

Este es el código D3 que tengo a partir de ahora:

var w = options.width,
    h = options.height,
    p = options.padding,
    x = d3.scale.linear()
        .domain([0, 1])
        .range([0, w]),
    y = d3.scale.linear()
        .domain([options.ydomainstart, options.ydomainend])
        .range([h, 0]);

var vis = d3.select(options.element)
    .data(data)
   .append("svg:svg")
    .attr("width", w + p * 2)
    .attr("height", h + p * 2)
   .append("svg:g");

vis.append("svg:line")
    .attr("stroke", '#808080')
    .attr("x1", p)
    .attr("x2", p)
    .attr("y1", 0)
    .attr("y2", h - p);

vis.append("svg:line")
    .attr("stroke", '#808080')
    .attr("x1", p)
    .attr("x2", w)
    .attr("y1", h - p)
    .attr("y2", h - p);

var rules = vis.selectAll("g.rule")
    .data(data)
   .enter()
   .append("svg:text")
    .attr("x", w - p)
    .attr("y", function(d, i) { return 15 + i*12; })
    .attr("text-anchor", "end")
    .attr("font-size", 12)
    .attr("fill", function(d, i) { return defaultColors[i % 5]; })
    .text(function(d) { return d.label;});

var lines = rules.data(function(d, i) {
        return d.data;
    })
   .append("svg:path")
    .attr("stroke", function(d, i) { return defaultColors[i % 5]; })
    .attr("d", d3.svg.line()
    .x(function(d) {
        return x(d[0]);
    })
    .y(function(d) {
        return y(d[1]);
    }));

El problema que tengo aparece en esta parte del código:

.x(function(d) {
    return x(d[0]);
})
.y(function(d) {
    return y(d[1]);
}));

Los datos dentro de 'd' NO son la matriz de puntos [x, y], sino cada valor dentro de cada matriz.

Significado, en el primer elemento, d contiene la coordenada x, en el segundo elemento, tiene la coordenada y, en el tercer elemento, contiene la coordenada x en el siguiente punto y así sucesivamente.

Es como si estuviera yendo recursivamente a la matriz, y luego nuevamente para cada valor dentro.

No tengo idea de cómo solucionar esto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta