Ich baue ein Balkendiagramm in d3.js auf, in dem jeder Balken die Gesamtzahl der TB-Fälle in einem Monat darstellt. Die Daten bestehen im Wesentlichen aus einem Datum (zunächst Zeichenfolgen im Format %Y-%m, aber analysiert mit d3.time.format.parse) und einer Ganzzahl. Ich möchte, dass die Achsenbeschriftungen relativ flexibel sind (nur Jahresgrenzen anzeigen, jeden Monat beschriften usw.), aber ich möchte auch, dass die Balken gleichmäßig verteilt sind.
Ich kann flexible Achsenbeschriftungen erhalten, wenn ich eine Datenskala verwende:
var xScaleDate = d3.time.scale()
.domain(d3.extent(thisstat, function(d) { return d.date; }))
.range([0, width - margin.left - margin.right]);
... aber die Balken sind nicht gleichmäßig verteilt aufgrund der unterschiedlichen Anzahl von Tagen in jedem Monat (zum Beispiel liegen Februar und März deutlich näher beieinander als andere Monate). Ich kann gleichmäßig verteilte Balken mit einer linearen Skala erhalten:
var xScaleLinear = d3.scale.linear()
.domain([0, thisstat.length])
.range([0, width - margin.left - margin.right]);
... aber ich kann nicht herausfinden, wie ich dann datumsbasierte Achsenbeschriftungen haben kann. Ich habe versucht, beide Skalen gleichzeitig zu verwenden und die Achse nur aus der xScaleDate
zu generieren, nur um zu sehen, was passieren würde, aber die Skalen stimmen natürlich nicht ganz überein.
Gibt es einen einfachen Weg, um dies zu erreichen, den ich übersehe?