ポイントが名前とそれに付随する番号で配置されている d3.js を使用して散布図を作成します。プロットされるデータは次のようになります。
name, group, number
"AB", "A", 0.5
"ABC", "A", 10.0
"BC", "B", 3.0
"BCD", "B", 5.0
"BCDE", "B", 0.3
"CD", "C", 1.6
"DE", "D", 1.5
私が達成したいこと。
私が達成したいのは、名前に従ってポイントが x 軸上に散らばっているプロットですが、x 軸はグループごとに 1 回グループを表示し、異なるグループ間で目盛りを表示する必要があります。
結果は次のようになります。
私がこれまでに持っているもの。
私はy軸とx軸を持っていますが、目盛りとラベルは表示されていません。原則として、軸は以下のコードを使用して作成されます (x 軸の例)。
var x = d3.scale.ordinal()
.rangeBands([0, 400]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom")
.tickValues(0) // hide ticks
.tickFormat(""); // hide labels
ドメインは名前列から派生します。
x.domain(data.map(function(d) { return d.name; }));
そして実際のsvgに追加されます:
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + 400 + ")")
.call(xAxis)
このコードは、次のプロットになります。
私が試したこと。
上記の最初の x 軸を作成するために使用した手順を繰り返すだけで、 2 番目の x 軸を追加してみました。名前をに変更x
しx2
、目盛りとラベルを表示して、ドメインを からではなく から派生させましd.name
たd.group
。完全なコードはこちらです。当然、これは x 軸全体に沿ってラベルと目盛りを分散し、グループ情報を組み込みません。
質問。
データのグループ列に従って、x 軸のラベルと目盛りを分散するにはどうすればよいですか?