Читать csv/tsv без заголовка в D3
У меня есть CSV-данные, которые выглядят примерно так:
Данные
1,1,10
1,2,50
1,3,5
etc...
И я пытаюсь читать данные. Однако мои исходные данные не содержат строку заголовка (как видно выше), поэтому первая строка данных является заголовком (1,1,10). Во всяком случае, вокруг этого. Я хочу установить имена заголовков после того, как я прочитал данные
Javascript
d3.csv("data/testnh.csv", function(data) {
console.log(data);
}
Спасибо!
Ответы
Ответ 1
Используйте d3.text для загрузки данных, а затем d3.csvParseRows, чтобы проанализировать его. Например:
d3.text("data/testnh.csv", function(text) {
console.log(d3.csvParseRows(text));
});
Возможно, вам также захочется преобразовать ваши столбцы в числа, потому что по умолчанию они будут строками. Предположим, что это все числа, вы могли бы сказать:
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);
});
Ответ 2
Так как Bostock отвечает в 2012 году, d3.csv.parseRows позволяет использовать дополнительную функцию доступа, которая позволяет его ответ выражаться более кратко:
d3.text("data/testnh.csv", function(text) {
var data = d3.csv.parseRows(text, function(d) {
return d.map(Number);
});
// Now do something with data
});
Ответ 3
сначала прочитайте данные с помощью d3.text
, затем добавьте собственную строку заголовка, затем проанализируйте результат с помощью 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
}
Ответ 4
Попробуйте d3.csvParse(текст)
d3.csv.parseRows, похоже, не работает в современной версии d3.