2016-12-21 9 views
0

Ich habe eine CSV mit zwei Spalten von Daten für zwei Zeilen in einem mehrzeiligen Seriendiagramm.Plotten mehrere Zeilen mit unterschiedlicher Anzahl von Werten

Die Daten sind wie folgt aus:

date,Presidential Approval,Congressional Approval 
1/11/09,,39 
2/8/09,64, 
3/12/09,59, 
4/6/09,61, 
4/21/09,,49 
4/21/09,63, 
6/14/09,61, 

Wie Sie sehen können, die Daten nicht für die beiden Spalten Karte über, aber ich möchte die beiden Linien auf dem gleichen Chart sein.

Gibt es eine Möglichkeit, die Enter-Methode mit zwei Zeitreihen wie dieser zu verwenden?

Wenn Sie das klassische D3 Muster eingeben:

var lines = svg.selectAll(".lines") 
     .data(data_array) 
     .enter() 
     .append('g') 
     .attr('data-name', function(d,i) { return d.name; }) 
     .attr('class','lines'); 

    lines 
     .append("path") 
     .attr("d", function(d) { return line(d.values); }) 
     .style("stroke-width", 4.75); 

Es gibt 0 Werte für die leeren Werte. Ich möchte es einfach überspringen und interpolieren zwischen den Punkten für jede Zeile.

Antwort

1

Der beste Weg, fand ich, dies zu tun war meine Daten zu filtern vor der Zeit in der Brutphase:

var data_array = keys.map(function(name) { 
     return { 
     name: name, // values > 0 will be excluded 
     values: data.filter(function(d) { return +d[name] > 0 }).map(function(d) { 
      return {date: d.date, poll: +d[name]}; 
     }) 
     }; 
    }); 
Verwandte Themen