I have CSV data which looks something like:
Data
1,1,10
1,2,50
1,3,5
etc...
And I am trying to read in the data. However, my initial data does not contain a header row (as seen above) so it is taking the first data row to be the header (1,1,10). Is there anyway around this. I want to set the header names after I read the data
Javascript
d3.csv("data/testnh.csv", function(data) {
console.log(data);
}
Thanks!
Use d3.text to load the data, and then d3.csvParseRows to parse it. For example:
d3.text("data/testnh.csv", function(text) {
console.log(d3.csvParseRows(text));
});
You'll probably also want to convert your columns to numbers, because they'll be strings by default. Assume they are all numbers, you could say:
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);
});
Since Bostock's answer in 2012, d3.csv.parseRows allows for an optional accessor function, which enables his answer to be expressed more concisely:
d3.text("data/testnh.csv", function(text) {
var data = d3.csv.parseRows(text, function(d) {
return d.map(Number);
});
// Now do something with data
});
first read in data using d3.text
, then add custom header string, then parse the result with 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
}
Try d3.csvParse(text)
d3.csv.parseRows seems doesn't work in modern d3 version.
来源:https://stackoverflow.com/questions/13870265/read-csv-tsv-with-no-header-line-in-d3