2016-08-22 3 views
0

을 나는 자바 스크립트 날짜의 배열이 있습니다만들기 X 축 날짜의 배열과()는 객체 - D3.js

dates = [Fri Jan 02 2015 00:00:00 GMT-0600 (CST), 
Mon Jan 05 2015 00:00:00 GMT-0600 (CST), 
Tue Jan 06 2015 00:00:00 GMT-0600 (CST), 
Wed Jan 07 2015 00:00:00 GMT-0600 (CST), 
Thu Jan 08 2015 00:00:00 GMT-0600 (CST), 
Fri Jan 09 2015 00:00:00 GMT-0600 (CST), …] 

현재 많은 날짜로합니다. 그러나 필요한 경우에는 D3.js 또는 Date() 형식으로 파싱 할 수 있습니다. 내 timescale x 축에는이 날짜에 대한 틱만 있습니다 (주말과 휴일을 건너 뛴다는 사실을 알기를 바랍니다). 이것이 D3에서 가능합니까? 현재 시도했습니다

timeScale = d3.time.scale() 
    .domain(dates) 
    .range([0, width]) 
    .clamp(true); 

그러나 작동하지 않습니다. .domain([minDate, maxDate])을 사용하지만 주말과 공휴일은 포함됩니다.

답변

1

d3.time.scale()이 염두에두고 설계되지 않았기 때문에 짧은 대답이 '아니오'인 것처럼 보이지만 가능하지 않습니다. Bostock (D3의 창조자)에 따르면

:

당신은 당신이 고려해야 할 때와 같은 연속, 양적 변수로 시간을 표시 할 때 d3.time.scale 사용한다 일광 절약 시간 변경으로 인해 일수가 23-25 ​​시간 일 수 있으며 윤년이 있기 때문에 연도는 윤년으로 인해 365-366 일과 다를 수 있습니다. 연속 시간과 일반 달력 단위의 모든 비정상을 표시하고 싶지 않으면 d3.time.scale을 사용하지 않고 d3.scale.linear를 사용하고 싶을 것입니다.

따라서, 귀하의 경우, 더 나은 접근 방식은 선형 스케일을 생성하고이 같이 당신의 일에 매핑 될 것이다 : 또한

Fri Jan 02 --> 1 
Mon Jan 05 --> 2 
Tue Jan 06 --> 3 
Wed Jan 07 --> 4 
Etc... 

을, 당신은 Bostock에서이 구현에서보기를 할 수 있습니다 그 (나는 그것을 시도하지) 평일 번호와 날짜 사이의 변환합니다

https://gist.github.com/mbostock/5827353

+0

대 - 감사합니다. 결론적 인 대답은 서수 척도를 사용해야합니다. – Jared

+1

먼저 선형을 시도하십시오. 재미있는 일은 순서대로 일어날 수 있습니다. –