Ich bin neu bei d3.js (derzeit mit d3.v4) und bin stecken geblieben versuchen, d3.nest zu verwenden, um mehrere Zeilen zu plotten.d3 verschachtelte Liniendiagramm
Dies ist der Code, den ich habe:
var color = d3.scaleOrdinal().range(
'#673ab7',
'#9c27b0',
'#e91e63',
'#f44336',
'#ff5722',
'#ff9800',
'#ffc107',
'#ffeb3b',
'#cddc39',
'#8bc34a',
'#4caf50',
'#009688']);
var line = d3.line()
.x(function(d) { return x(d.day); })
.y(function(d) { return y(d.temp); });
d3.csv('/static/data/temp_d3.csv', function(error, data){
data.forEach(function(d){
d.day= +d.day,
d.temp= +d.temp;
});
//nest the entries by month
var dataNest = d3.nest()
.key(function(d) {return d.month;}).sortKeys(d3.ascending)
.key(function(d) {return d.day;}).sortKeys(d3.ascending)
.entries(data);
//loop through each symbol/key
dataNest.forEach(function(d){
svg.append('path')
.data([data])
.attr('class','line')
.style('stroke',function() {
return d.color = color(d.key);})
.attr('d', line);
});
});//end of read csv
This is the graph I get, which doesn't seem like the points are sorted at all. im Format Meine Datendatei
[month,day,temp]
[x , y ,z]
.
.
[x, y, z ]
ist und die Datei in irgendeiner Weise nicht sortiert ist. Ich möchte nach Monat und Tag nisten und sortieren und habe 12 verschiedene Linien (mit verschiedenen Farben) auf einem Grundstück. Kann mir jemand helfen? Vielen Dank.
definitiv gute arbeit für die loswerden der forEach - in den meisten (guten) d3 code habe ich noch nie eine for loop gesehen! – danimal