Как получить данные с TSV или CSV для массива в D3.js из TXT-файла?

Я использую это для синтаксического анализа файла CSV и создания данных массива, как указано в документации D3:

d3.tsv("classes_h.txt", function(data) { 
    data.forEach(function(d) { 
        console.log(data[0]);
        console.log("lol");
    });
    console.log(data[0]);
});

или же

d3.tsv("classes_h.txt", function(data) { 
    console.log(data[0]);
});

Однако я получаю неопределенный в консоли, когда я вызываю данные [0]. Я также попытался записать "data вместо"data[0]", в результате чего я получил пустой массив -> []:

Мой текстовый файл выглядит так: http://puu.sh/7LrRm.png

Все разделено вкладкой, так что я использую tsv, и если я правильно понял, то, используется ли tsv или csv, зависит от формата данных?

Заранее спасибо.

3 ответа

Решение

РЕШИТЬ

TSV не просто берет элементы, разделенные табуляцией, а бросает их в массив. Вы формат, чтобы выглядеть так:

Group1 Group2 Group3
data1  data1  data1
data2  data2  data2
data3  data3  data3

Затем вы можете распечатать и убедиться, что данные загружены:

data.forEach(function(d) { 
    console.log(d);
});

При печати всех данных D3 создаст объекты, каждый из которых имеет группу, связанную со всеми своими данными. Вот вывод моего примера:

Object {Group1: "data1", Group2: "data1", Group3: "data1"}
Object {Group1: "data2", Group2: "data2", Group3: "data2"}
Object {Group1: "data3", Group2: "data3", Group3: "data3"}

Эти объекты эквивалентны данным [0], данным [1] и данным [2], что оставляет группу1, группу2 и группу3.

Изменение данных [0] на d.заголовок данных, которые вы хотите отобразить, должен работать.

d3.tsv("classes_h.txt", function(data) { 
data.forEach(function(d) { 
    console.log(d.*displaydata*);
    console.log("lol");
});

Это местный хостинг? Если это вы загружаете страницу с file:// протокол или он был обслужен через http (например, http://localhost:8080).

Если он использует file:// то у вас будут проблемы, так как браузер не позволит загрузить файл с XMLHttpRequest который d3.tsv() использует для получения файла.

Или следуйте советам Ларса и проверьте на наличие ошибок.

d3.tsv("file.tsv", function(error, data){
    if(error){
        return console.log(error);
    }
    // there was no error
});
Другие вопросы по тегам