2013-07-19 5 views
4

У меня есть массив датыD3 Гистограмма - Дата основания

["01/01/2001", "01/01/2001", "03/01/2001", "01/04/2001", "01/05/2001", "02/05/2001", "01/07/2001", "01/07/2001", "01/07/2001", "01/10/2001"] 

Некоторые дублируют и в произвольном порядке, по различной шкале времени (1 неделю, 43 дней, 2 года и т.д.).

Что я хочу сделать, это создать гистограмму (или гистограмму), которая показывает количество «дат» в произвольных количествах коек (например, 20 ведер).

Где нет дат в ковше, он показывает нуль и общее количество для тех ведер, которые содержат даты.

В принципе как в этом примере: http://bl.ocks.org/mbostock/3048450

Но вместо того чтобы показывать случайную «секунду» мне нужно «дата».

Как:

Histogram of dates

Я предполагаю, что я ищу, чтобы изменить масштаб X домен в диапазоне дат в моих данных.

+0

Что вы пробовали? Это очень неопределенный вопрос - пожалуйста, обновите конкретные проблемы, с которыми вы боретесь. –

+0

В частности, что мне нужно изменить в этом примере (http://bl.ocks.org/mbostock/3048450), чтобы принять массив «дат», а не «минут» – ukmikeb

+1

Это похоже на все, что вам нужно будет сделать это изменение форматирования для тиков x оси, чтобы принять дату, проанализировать ее и затем отформатировать, как вы хотите. –

ответ

6

Таким образом, решение для этого как @LarsKotthoff предлагается в комментариях.

var x = d3.time.scale().domain([firstDate, lastDate]).range([0, width]); 

var data = d3.layout.histogram() 
     .bins(x.ticks(bins)) 
     (values); 

var formatDate = d3.time.format("%d/%m/%y"); 
var xAxis = d3.svg.axis() 
      .scale(x) 
      .orient("bottom") 
      .tickFormat(formatDate); 
+3

Не могли бы вы вставить полный код, который вы использовали для решения этой проблемы? неясно, какие переменные вы предварительно определили до генерации вашей гистограммы. Благодаря! – aboutaaron

+2

Я нашел вычисление ширины баров немного нечетным, потому что в массиве данных, который макет гистограммы генерирует значение 'x', является датой, но значение' dx' составляет несколько миллисекунд. Для ширины строки я использовал: 'x (новая дата (данные [0] .x.getTime() + data [0] .dx))' – npdoty

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