2016-12-11 6 views

Antwort

3

Entfernen Sie die ticks aus Ihrer Zeitskala:

var dateArray = d3.time.scale() 
    .domain([new Date(2013, 1, 1), new Date(2013, 1, 7)]); 

Und verwenden Sie es mit Ihren x Variable:

var x = 10; 
var spacedDates = dateArray.ticks(x); 

Gemäß der Dokumentation, ticks():

Gibt repräsentative Daten aus der Eingabe-Domain der Waage zurück. Die zurückgegebenen Tick-Daten sind gleichmäßig beabstandet (modulo-unregelmäßige Zeitintervalle, wie beispielsweise Monate und Schaltjahre), haben für Menschen lesbare Werte (wie beispielsweise Mitternacht) und sind garantiert innerhalb der Ausdehnung der Eingangsdomäne.

jedoch die Länge des Arrays ist nicht unbedingt die Nummer, die Sie ticks passieren:

Wenn Zählung eine Zahl ist, dann etwa Zahl zurückgegeben werden Zecken. (Hervorhebung von mir)

Hier ist eine Demo:

var dateArray = d3.time.scale() 
 
    .domain([new Date(2013, 1, 1), new Date(2013, 1, 7)]); 
 
\t \t 
 
var x = 10; 
 
var spacedDates = dateArray.ticks(x); 
 
\t \t 
 
console.log(spacedDates);
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

EDIT: Um die genaue Anzahl der Termine, können Sie invert() verwenden und deine eigenen bevöl Array:

for(var i = 0; i<x; i++){ 
    spacedDates.push(dateArray.invert(i)); 
} 

Überprüfen Sie die Demo:

var x = 10; 
 

 
var dateArray = d3.time.scale() 
 
    .domain([new Date(2013, 1, 1), new Date(2013, 1, 7)]) 
 
\t \t .range([0, x-1]); 
 
\t \t 
 
var spacedDates = []; 
 
\t \t 
 
for(var i = 0; i<x; i++){ 
 
    spacedDates.push(dateArray.invert(i)); 
 
} 
 

 
console.log(spacedDates);
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

+0

Super, danke für die Erklärung und Dokumentation. Macht jetzt Sinn! – user6096418

+0

nach dem Lesen der Dokumentation, wie Sie sagen, dass es Ticks zurückgibt, gibt es eine Methode, damit es die genaue Eingabe x zurückgibt? – user6096418

+1

Danke, ich habe versucht, ein paar verschiedene Methoden zu verwenden, ohne Erfolg. Ich werde über Invert() schauen, aber danke nochmal! – user6096418

Verwandte Themen