Comencé a usar d3 para pasar algunos datos CSV, y normalmente mi CSV parece
num,value 1,2 3,1 5,2pero estoy cargando un archivo CSV con el nombre de archivo "sample2.csv" que no tiene encabezados y simplemente parece
5,3 7,5, el código que estoy usando parece
d3.queue() .defer(d3.csv, "sample1.csv").defer(d3.csv, "sample2.csv").defer(d3.csv, "sample3.csv") .await(function(error, sample1, sample2, sample) { }He leído que para el CSV sin encabezados, debe usar csvParseRows
¿Es esto correcto? ¿Y cómo podría pasar csvParseRows a mi código para "sample2.csv"?
¿Alguien sabe mucho sobre d3 y cómo se podría hacer esto?
Gracias
Si usa d3.queue, puede analizar el texto del csv como de costumbre, luego, en la función de espera, deberá analizar las filas:
d3.queue() .defer(d3.text,"test.csv") .await(ready); function ready(error, text) { var csv = d3.csvParseRows(text); console.log(csv); /* use csv data */ }El método csvParseRows toma una cadena de texto que representa el contenido del archivo, no la URL del archivo. Podemos obtener esos contenidos con d3.text, procesarlo una vez que lo hayamos cargado.
Sin embargo, con d3v5 más alto, no necesitaríamos d3-queue, ya que podemos usar un enfoque muy similar sin:
d3.text("test.csv").then(ready) function ready(text) { var csv = d3.csvParseRows(text); console.log(csv); /* use csv data */ }Y si tuviéramos muchos archivos:
Promise.all([d3.text("file1.csv"),d3.text("file2.csv")]).then(ready); function ready(files) { var csvs = files.map(function(file) { return d3.csvParseRows(file); }); console.log(csvs); /* use csv data */ }