#javascript #d3.js #multiple-file-upload
#javascript #d3.js #загрузка нескольких файлов
Вопрос:
Я хочу прочитать несколько файлов и отобразить всю информацию на одном графике в D3.
Я пробовал использовать promise.все, но, похоже, это преобразует файлы в объекты, которые я не могу перебирать.
Promise.all([
d3.csv('FortunaSighted.csv'),
d3.csv('atlasblind.csv')
])
.then(([sight, blind]) => {
console.log(sight[0][0])}
он просто говорит, что это не определено.
Комментарии:
1. он возвращает массивы объектов, а не двумерные массивы, с ключами, названными в честь заголовков. регистрируйте только
sight[0]
2. Не могли бы вы добавить, как выглядят CSV-файлы, к вашему сообщению? Я предполагаю, что sight — это массив объектов, поэтому
sight[0][key in sight[0]
, вероятно, было бы хорошо. CSV преобразуются в массив объектов
Ответ №1:
Вы должны читать файлы CSV независимо и добавлять их вместе, а затем рисовать их на одном графике.
Если файлы CSV имеют общий уникальный идентификатор (который они должны использовать, если вы пытаетесь отобразить их на одном графике), затем прочитайте их с помощью
var data1 = d3.csvParse(csv1);
var data2 = d3.csvParse(csv2);
csvParse приведет их в виде массивов. Теперь вы можете сопоставить идентификаторы, используя что-то похожее на, но не совсем:
data1.forEach(function(d) {
var obj = data2.find(function(e) {
return d.id === e.id
});
});
Комментарии:
1. Я не думаю, что эта опция работает, если есть n файлов. Как бы я использовал этот метод, если бы у меня было n файлов?