Sto costruendo una visualizzazione della timeline con d3 in cui il dominio può variare da un paio di giorni a diversi decenni. Sto utilizzando una scala di tempo d3 e l'asse in questo modo:d3.js: ottieni il formato tick dalla scala temporale
var timeScale = d3.time.scale()
.domain([firstEvent, lastEvent])
.range([leftPadding, w - rightPadding]);
var timeAxis = d3.svg.axis()
.scale(timeScale)
.orient("bottom");
timeAxis.ticks(5);
Dal momento che il dominio è così variabile, è comodo da usare ticks(x)
che sceglierà automaticamente il formato tick. Il mio problema è che in alcuni casi, l'anno non viene mostrato, il che è cruciale. La mia idea era di verificare il formato del tick dopo che l'asse è stato creato e, se non contiene un anno, mostrarlo manualmente vicino all'asse. Tuttavia, non sono stato in grado di ottenere il formato di spunta della scala; utilizzando timeScale.tickFormat()
si restituisce appena una funzione. Come posso risolvere questo problema?
È possibile chiamare '.ticks()' senza argomenti per ottenere le posizioni di spunta. –
@LarsKotthoff Sì, ma '.ticks()' restituisce le posizioni non formattate, quindi non è possibile stabilire se l'anno verrà visualizzato in nessuna delle loro etichette, per quanto posso vedere. – speedymcs