2013-05-03 21 views
5

Szukałem w oficjalnej dokumentacji d3.js, a także tutaj w stackoverflow, aby znaleźć sposób na dodanie niestandardowych wartości tick do osi czasu; Jednak nie natknąłem się na żadną dokumentację potwierdzającą, że coś takiego jest możliwe.d3js set tickValues ​​dla osi czasu osi

W gruncie rzeczy mam oś czasu i chciałbym pokazać konkretne godziny np. chciałbym zrobić coś takiego:

xHourAxis 
    .ticks(d3.time.hours, 2) 
    .tickFormat(d3.time.format('%I %p')) 
    .tickValues(2, 4, 6, 8, 10, 12) ; 

więc chcę wyświetlić wartości kleszcza co 2 godziny, ale nie w tym pierwszy (12 rano) i ostatni (12 pm).

Czy ktoś wie, czy istnieje jakieś obejście tego?

+1

Nie podawaj 'ticks()', jeśli używasz również 'tickValues ​​()'. Podane wartości znaczników muszą być wartościami czasu, ale poza tym powinny działać. Jak ci to nie działa? –

+0

Po prostu nie wyświetla żadnych tyknięć dla wartości i przekazać; mimo że pozbyłem się kleszczy() – ppoliani

+2

Jak już powiedziałem, musisz przekazywać obiekty daty, a nie tylko liczby całkowite. –

Odpowiedz

0

Prawie istnieje, ale twój kod ma dwa problemy: Najpierw należy zaznaczyć wartości w tablicy, a po drugie wartości te powinny być obiektami daty JavaScript. czyli po prostu dostarczyć tablicę terminach do tickValues tak Twój kod będzie wyglądać tak:

xHourAxis 
.tickFormat(d3.time.format('%I %p')) 
.tickValues([new Date(2000,10,5), new Date(2005,2,7), new Date(2007,11,11)]); 

Należy również pamiętać, że nie trzeba zadzwonić do ticks() jeśli masz zamiar później określić wartości niestandardowych.