Как получить данные с 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
});