Ich habe einige Diagramme erstellt, um Intra-Day-Daten aus finanziellen Ergebnissen zu plotten. Oft ist dies ein Wert, der alle zehn Minuten generiert wird. Dies variiert, aber es ist ein gutes Beispiel. Daher gibt es große Zeiträume, in denen ich keine Informationen bekomme, zB wenn die Märkte am Wochenende und zwischen 17:00 Uhr abends und 21:00 Uhr morgens geschlossen sind. Ich habe versucht, eine benutzerdefinierte Zeitskala für die X-Achse erstellt, aber am Ende ist das beste Ergebnis, nur eine Ordinalskala zu verwenden. Es funktioniert gut und gibt das Ergebnis, dass ich und die Leute, die das Diagramm lesen wollen, dh keine Lücken im Liniendiagramm und gleichmäßig platzierte Datenpunkte haben. (Es ist die Konvention)benutzerdefinierte Ticks auf einer Ordinalskala d3
Meine Frage ist, woher weiß ich Plot benutzerdefinierte Ticks auf dieser xAxis an der richtigen Stelle, vorausgesetzt, dass ich sie in einem Array namens ticks.major generieren. Das folgende Beispiel zeigt, wie ich die Achse erzeuge und es gibt die richtige Anzahl von Tagen. Aber sie werden alle am Anfang des Graphen gezeichnet. Jede Hilfe dankbar, danke.
var xScale = d3.scale.ordinal()
//var xScale = scaleWeekday()...custom timescale no longer used
.domain(xDomain)
.rangeBands([0,(plotWidth-yLabelOffset)])
var xAxis = d3.svg.axis()
.scale(xScale)
//.tickValues(ticks.major)//used to create tick d3 time scale axis
.tickFormat(function (d,i) {
return ticks.major[i]
})
.tickSize(yOffset/2)
.orient("bottom");
var xLabel=plot.append("g")
.attr("class",media+"xAxis")
.attr("transform",function(){
if(yAlign=="right") {
return "translate("+(margin.left)+","+(plotHeight+margin.top)+")"
}
else {return "translate("+(margin.left+yLabelOffset)+","+(plotHeight+margin.top)+")"}
})
.call(xAxis);