Подтвердить что ты не робот

Читать 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);
}

Спасибо!

4b9b3361

Ответ 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.