2014-05-11 2 views
3

다음 코드는 데이터 계열을 올림하고 분 간격으로 금액을 합산합니다.d3 사용자 지정 시간 간격

var nested_data = d3.nest() 
    .key(function(d) {return d3.time.minute(d.date)}) 
    .rollup(function(a) {return d3.sum(a, function(d) {return d.amount})}) 
    .entries(data); 

그러나 사용자 정의 간격을 5 분으로 설정하는 방법이 있습니까? 아마도 단계가있는 범위를 사용하고 있을까요?

+1

. 열쇠 함수''Math.floor (d3.time.minute (d.date)/5)를 돌려 주려고 했습니까? – Paul

+0

답장을 보내 주셔서 감사합니다. 그냥 시도했지만 그냥 날짜를 1978 년으로 변환하는 것으로 보이며 더 이상 반올림되지 않습니다. 이 페이지는 d3.time interval 함수, https://github.com/mbostock/d3/wiki/Time-Intervals에 대해 설명하지만 사용자 정의 간격을 만드는 데 단계 단계를 사용하는 방법을 알아낼 수 없습니다. – John

+1

괄호가 어디에 사용되는지주의하십시오. 'Math.floor'는 정수만 반환합니다. 현재 날짜를 5로 나누면 1970 년 이래로 날짜가 ms로 정수로 표시되기 때문에 1978 년에 종료됩니다. 그러나 제안은 분을 날짜가 아닌 5로 나눕니다. – Paul

답변

0

이 그것을 할 것으로 보인다 : 나는 D3,하지만 단지 자바 스크립트를 사용하지 않는

var coeff = 1000 * 60 * 5; 
    var nested_data = d3.nest() 
    .key(function(d) { return new Date(Math.round(d.date.getTime()/coeff) * coeff)}) 
    .rollup(function(a) {return d3.sum(a, function(d) {return d.amount})}) 
    .entries(data);