Загрузка локальных данных для визуализации с помощью D3.js

Я работаю над проектом, который требует от меня визуализации довольно сложного типа данных (см. этот старый вопрос). Короче говоря, у меня есть большой кусок данных, который я могу экспортировать в JSON, CSV или какой-либо другой произвольный плоский формат, хотя я предпочитаю избегать XML, если это возможно (см. связанный вопрос выше, в -подробное объяснение лежащего в основе данные ).

Я начал работать над визуализацией с использованием D3, макет, который я написал, пока работает нормально, когда я тестирую его с некоторыми очень простыми данными, которые я жестко закодировал в Javascript в виде массива. Учебники, которые я читал по привязке данных в D3, были немного запутанными в том смысле, что некоторые используют JSON, а некоторые используют формат TXT/CSV, а некоторые другие используют жестко запрограммированные массивы/матрицы.

В случае с JSON я смотрел руководство, в котором рассказчик настоятельно советует разместить файл JSON на веб-сервере и получить его с помощью HTTP-запроса вместо чтения локального файла. Я понимаю, что это связано с ограничениями междоменных запросов, которые, как мне кажется, мне нужно как-то -обойти. На данный момент я не уверен, как действовать, поскольку:

  1. Визуализация на основе D3 -будет представлена ​​в виде серии HTML-отчетов, созданных в результате написанного мной инструмента анализа. Анализ выполняется на компьютере пользователя, отчеты в формате HTML также создаются локально на стороне клиента -.

  2. Предполагаемые пользователи определенно не разбираются в технологиях -, поэтому нельзя указывать им запускать веб-сервер на своем компьютере, чтобы иметь возможность обслуживать JSON или любой другой тип или ресурс через локальный хост

. Для справки, я попытался запустить модуль python SimpleHTTPServer, чтобы попробовать его, и снова все работает нормально.Затем я попытался жестко -закодировать данные в сгенерированных HTML-отчетах, а затем вызвать объект JSON из моего скрипта, использующего D3,

//d3.json("mydata.json", function(json){
d3.json(myjson, function(json){
    nodeData = json.elements;
....
}

что не удается, поскольку в этом случае я в конечном итоге отправляю объект JSON, в то время как D3.js ожидает URL-адрес.

Что я могу сделать, чтобы избежать/решить эту проблему?

13
задан Community 23 May 2017 в 11:44
поделиться