Я хочу построить некоторые временные ряды данных, которые не являются непрерывными (пробелы в датах для выходных, праздников и т. Д.). Это ежедневные данные.D3 Непрерывный срок Домен дает пробелы по оси X
данные выглядит примерно так:
date,value
1/2/15,109.33
1/5/15,106.25
1/6/15,106.26
1/7/15,107.75
1/8/15,111.89
1/9/15,112.01
1/12/15,109.25
1/13/15,110.22
...
Так я определяю мой x
и y
scales
:
var x = d3.time.scale().range([0, width]);
var y = d3.scale.linear().range([height, 0]);
И установить домен из моего источника данных:
x.domain(d3.extent(data, function(d) { return d.date; }));
y.domain(d3.extent(data, function(d) { return d.value; }));
проблема заключается в том, что мои даты имеют пробелы в им. И теперь моя ось x включает в себя те отсутствующие даты (d3.time.scale()
делает это автоматически, я думаю, потому что она отображается в непрерывном диапазоне?).
.extent()
находит максимальное и минимальное значения в date
, тогда .domain()
возвращает эти значения max и min в качестве диапазона для оси x. Но я не уверен, как справиться с пробелами и вернуть даты отсутствия пробелов в диапазон.
Итак, мой вопрос: как я могу использовать диапазон по оси x только в датах, которые находятся в моем наборе данных? И не «заполнить пробелы». Должен ли я играть с d3.time.scale().range()
? или мне нужно использовать другой scale
?
Каков правильный способ сделать это? Может ли кто-нибудь указать мне в правильном направлении или привести пример? Спасибо!
Также, пожалуйста, я хочу решить с помощью простого d3 и javascript. Я не заинтересован в использовании каких-либо сторонних библиотек абстракции.
Вы можете использовать порядковую шкалу. –