web-dev-qa-db-fra.com

lire csv/tsv sans ligne d'en-tête dans D3

J'ai des données CSV qui ressemblent à quelque chose comme:

Les données

1,1,10
1,2,50
1,3,5
etc...

Et j'essaie de lire les données. Toutefois, mes données initiales ne contiennent pas de ligne d’en-tête (comme indiqué ci-dessus). La première ligne de données est donc l’en-tête (1,1,10). Y at-il de toute façon autour de ça. Je veux définir les noms d'en-tête après avoir lu les données

Javascript

d3.csv("data/testnh.csv", function(data) {
    console.log(data);
}

Merci!

22
by0

Utilisez d3.text pour charger les données, puis d3.csvParseRows pour les analyser. Par exemple:

d3.text("data/testnh.csv", function(text) {
  console.log(d3.csvParseRows(text));
});

Vous voudrez probablement aussi convertir vos colonnes en nombres, car elles seront des chaînes par défaut. Supposons que ce sont tous nombres, vous pourriez dire:

d3.text("data/testnh.csv", function(text) {
  var data = d3.csvParseRows(text).map(function(row) {
    return row.map(function(value) {
      return +value;
    });
  });
  console.log(data);
});
48
mbostock

Depuis la réponse de Bostock en 2012, d3.csv.parseRows permet une fonction d'accesseur facultative, ce qui permet à sa réponse d'être exprimée de façon plus concise:

d3.text("data/testnh.csv", function(text) {
    var data = d3.csv.parseRows(text, function(d) {
        return d.map(Number);
    });
    // Now do something with data
});
10
egnha

commencez par lire les données en utilisant d3.text, puis ajoutez une chaîne d’en-tête personnalisée, puis analysez le résultat avec d3.csv.parse

d3.text("data/testnh.csv", function(r){
   var result = "x, y, z\n" + r;  //now you have the header
   var data = d3.csv.parse(result);
   //do your plotting with data
}
1
Zhe Hu

Essayez d3.csvParse (text)

d3.csv.parseRows semble ne pas fonctionner dans la version D3 moderne.

0
Bimal Grg