X 軸の目盛りのラベルとして文字列を使用して棒グラフを作成したいと考えています (たとえば、0、1、2 などではなく、1 年目、2 年目など)。
次のように、x 軸の数値 (0、1、2、3 など) を使用することから始めました。
1)範囲を生成します:
x = d3.scale.ordinal()
.domain(d3.range(svg.chartData[0].length)) //number of columns is a spreadsheet-like system
.rangeRoundBands([0,width], .1);
y = d3.scale.linear()
.domain(Math.min(d3.min(svg.chartData.extent),0), Math.max(d3.min(svg.chartData.extent),0)])
.range([height, 0])
.nice();
2) 軸を作成します。
d3.svg.axis()
.scale(x);
3) 軸を再描画します。
svg.select(".axis.x_axis")
.call(make_x_axis().orient("bottom").tickSubdivide(1).tickSize(6, 3, 0));
これは、デフォルトの数値軸ラベルでうまく機能します。
このように x tickValues に文字列の配列を使用しようとすると....
d3.svg.axis()
.scale(x).tickValues(svg.pointsNames); //svg.pointsNames = ["Year 1", "year 2", etc.]
...チャートを再描画すると(データ/設定の変更の有無にかかわらず)、ラベルはこのように入れ替わります。
列 1 が列 0 に置き換わる様子と、その逆の様子に注意してください。
なぜこれが起こるのか知っていますか?