2016-12-14 3 views
1

Я работаю с данными временных рядов, которые пропускают данные на выходные. При графике этих временных рядов в D3 v4 граф интерполируется в выходные дни. Смотрите следующий URL для иллюстрации (в том числе кода, данных и вывода графика):Gap во временных рядах не отображается

No records for weekend

Вместо этого я хочу разрыв в выходные дни; остановка графика в пятницу и возобновление в понедельник.

я мог бы решить эту проблему путем создания фиктивных записей на выходные, со значениями «NA», и с использованием метода D3 defined, как показано в следующем:

Data has NA records

Однако, создавая фиктивные записи чувствует к мне как чрезмерно тяжелый подъем. Есть ли простой, естественный способ заставить D3 оставить пробел, когда отсутствуют записи временных рядов?

ответ

0

Есть ли простой, естественный способ заставить D3 оставить пробел, если отсутствуют записи временных рядов?

К сожалению, нет, это нормальное поведение шкалы времени. По словам Майка Босток, D3 создатель,

Время d3 шкала должна быть использована, если вы хотите, чтобы отобразить время как непрерывный, количественный переменной, например, когда вы хотите, чтобы принять во внимание тот факт, что дни может варьироваться от 23-25 ​​часов из-за изменений дневного света, а годы могут варьироваться от 365-366 дней из-за високосных лет.

Итак, шкала времени была создана с учетом непрерывного времени.

Ваш текущий подход в генераторе линии ...

.defined(function(d) { return !isNaN(d.value); }) 

... не работает, потому что все даты в вашей CSV имеют значения, и d3 будет соединять точки.

Это уже было сказано, если вы хотите сохранить пробел, просто использовать фиктивные записи (как null или любой не числовое значение) для выходных и line.defined, как в вашей второй ссылке.

+0

Мне кажется, что ваш метод не будет генерировать разрыв в выходные дни. Или я чего-то не хватает? – Argent

+0

Действительно, он создает диаграмму без выходных пробелов. Если вам нужен пробел, просто используйте 'null' и' line.defined', как на втором изображении. Поскольку вы хотите сохранить пробел, я отредактировал ответ. –

Смежные вопросы