2013-12-09 2 views
0

Я использую инструмент визуализации под названием Dangle.js, построенный на D3.js, и мне было интересно, какое представление было по умолчанию для даты, используя d3.time.scale(). Код для представления в области графика включает в себя эту строку, чтобы представить X-шкале осиКаково значение даты по дате в d3.js?

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

Сейчас данные, которые будут включены в графе:

$scope.graph = { 
    entries: [ 
     {time: "20120320", count: 100}, 
     {time: "20120321", count: 20}, 
     {time: "20120322", count: 43}, 
     {time: "20120323", count: 83} 
    ] 
}; 

Однако, «время 's данных находятся в неправильном формате, поэтому он не представляется в датах на оси x, как они должны быть. В каком формате должна быть дата для данных? Примером будет очень признателен. Большое спасибо.

ответ

2

По умолчанию для временной шкалы d3 используется значение JavaScript Date object.

Лучшей практикой является преобразование строк даты в ваши данные в объекты Date при загрузке. Это может быть сделано, например, с помощью D3 встроенный в date/time formatting:

var dateFormatIn = d3.time.format("%Y%m%d"); 

entries.forEach(function(entry) { 
    entry.time = dateFormatIn.parse(entry.time); 
}); 
x.domain(d3.extent(entries, function(d) { return d.time; })); 

Простой jsfiddle example here.

1

d3 time.format только строковые форматы Date объектов и не будут принуждать другие значения. У него есть parse method, чтобы преобразовать строку в объект Date, в формате, который вы можете указать.

d3.time.scale Домены работают с объектами Date, но если вы передадите их Numbers, метод domain() будет принуждать эти значения к датам (т. Е. Интерпретировать их как миллисекунды с 1970 года).

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