Zadałem pytanie przed około d3, a oni zasugerowali, żebym użył skali porządkowej, to rozwiązałoby moje problemy. Rzeczywiście rozwiązał on moje problemy, ale wiem, że utknąłem z innym problemem ...D3 linechart, nie można edytować ilości kleszczy w skali porządkowej?
Rysuje idealnie, ale moja oś X jest pełna tekstu. Na przykład chcę: 1900 1904 1908 1912 ... , ale dostałem: 190119021903190419051906. Jak widać, nie jest to jasne. (to tylko przykład, jeśli były tylko daty, mógłbym użyć innej skali). Gdziekolwiek spojrzałem, mówiono o ax.ticks (liczba). Ale to nie działa. Nic się nie dzieje i wciąż osiągam ten sam rezultat. I hacked wynik, aby uzyskać mniej wyników na osi x:
var str = [];
var i = 0;
while(i < data.length) {
str.push(data[i].age);
i=i+8;
}
x.domain(str);
Ale jeśli mogę to zrobić tworzy losową linię i nie wyciągać go już doskonale. Nie wiem jak to rozwiązać .. To prosty wykres liniowy, nic trudnego, jedyną trudnością (dla mnie) jest skala porządkowa ...
Mam nadzieję, że ktoś może mi pomóc.
to jak mój X i oś x jest zdefiniowana:
var x = d3.scale.ordinal()
.rangeRoundBands([0, width-150],1);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom")
bez pętli while (paskudny technikę), po prostu miał następującą linię wyznaczającą x.domain:
x.domain(data.map(function(d) { return d.age; }));
Za Twoją reakcję przyjrzę się dokumentacji, ale jak już powiedziałem, funkcja ticks() nie zadziałała. Jako przykład zrobiłem kleszcze(), ale mimo to wszystkie tyknięcia były widoczne. I jak powiedziałem, 1900, 1901 był przykładem, jeśli były tylko daty rzeczywiście użyłbym skali czasu ... –
TickValues () rozwiązał problem. Próbowałem, ale to nie zadziałało. Nie wiem, co wtedy zrobiłem źle, ale teraz działa. Dzięki za szybką odpowiedź. –