2017-01-20 19 views
2

Я бил свою голову над этим, но для жизни меня не понимаю, почему мой dc.js lineChart не отображает данные из объекта с перекрестнофильтрованными данными. Я по существу пытается скопировать и вставить дословно, в d3noob книгу пример dc.js, что вы можете найти в рабочем формате здесь:Dc.js lineChart не отображает перекрестные данные

https://bl.ocks.org/d3noob/raw/6077996/

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

http://bl.ocks.org/anonymous/9d225b361c740256376e04bbbc6f4e47

Я даже удостоверился включить точную JavaScript библиотеки и CSS, которые d3noob, используемую в своей книге примере (который работает), чтобы гарантировать, что это не какой-то вопрос совместимости с более новыми версиями некоторых из библиотек, но это не имело никакого значения. Буду признателен за любую помощь!

ответ

2

Ну, похоже, я понял, как это исправить. Похоже, что загруженный файл данных имеет другой диапазон дат данных от того, который d3noob разместил на своем блоке. Если я заменить жестко закодированный домен для timeChart от этого:

.x(d3.time.scale().domain([new Date(2013, 6, 18), new Date(2013, 6, 24)])) 

к этому:

.x(d3.time.scale().domain([new Date(2013, 7, 9), new Date(2013, 7, 18)])) 

Вещи начинают работать. Конечно, правильная вещь, чтобы сделать это, чтобы избежать всего жесткого кодирования, чтобы начать с помощью этого:

.x(d3.time.scale().domain(d3.extent(data, function(d) { return d.dtg; }))) 
+1

Или, в большинстве случаев, вы можете оставить вне домен масштаба, а также использовать [chart.elasticX] (http://dc-js.github.io/dc.js/docs/html/dc.coordinateGridMixin.html#elasticX__anchor). – Gordon

+0

Спасибо @ Gordon. Я только начал изучать d3/dc пару недель назад, и это было очень весело. Цените свои неустанные усилия вместе с другими на DC и CrossFilter! ура – HamsterHuey