Как прочитать несколько файлов для построения графика на одной строке в D3.js

#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 файлов?