私は d3.js でバー プロットを作成しています。各バーは 1 か月間の合計結核症例を表します。データは基本的に、日付 (最初は %Y-%m 形式の文字列ですが、d3.time.format.parse を使用して解析されます) と整数で構成されます。軸ラベルを比較的柔軟にしたいのですが (年の境界だけを表示したり、月ごとにラベルを付けたりするなど)、バーも等間隔にしたいと思います。
日付スケールを使用すると、柔軟な軸ラベルを取得できます。
var xScaleDate = d3.time.scale()
.domain(d3.extent(thisstat, function(d) { return d.date; }))
.range([0, width - margin.left - margin.right]);
...しかし、各月の日数が異なるため、バーの間隔は均等ではありません (たとえば、2 月と 3 月は他の月よりも著しく接近しています)。線形スケールを使用して等間隔のバーを取得できます。
var xScaleLinear = d3.scale.linear()
.domain([0, thisstat.length])
.range([0, width - margin.left - margin.right]);
...しかし、日付ベースの軸ラベルを作成する方法がわかりません。両方のスケールを同時に使用して、 から軸を生成するxScaleDate
だけで何が起こるかを確認してみましたが、スケールは自然に正しく整列しません。
私が見逃しているこれを達成する簡単な方法はありますか?