d3 で階層データを表現するために私が見たすべての例には、入れ子要素が含まれています。たとえば、div 内の div、またはテーブル行内のテーブル セルです。
結果のDOM要素が代わりに兄弟である階層データを表示する「正しい」方法は何ですか? たとえば、さまざまなレベルの見出し (h1、h2 など)。
私の最初の試み ( http://jsfiddle.net/herbcaudill/dTd99/ ) は、次のデータを取得します。
var data = [{
"key" : "1",
"values" : [{
"key" : "101",
"title" : "Sub Section 1.A"
}, {
"key" : "102",
"title" : "Sub Section 1.B"
}, {
"key" : "103",
"title" : "Sub Section 1.C"
}
],
"title" : "Section 1"
}, {
"key" : "2",
"values" : [{
"key" : "201",
"title" : "Sub Section 2.A"
}, {
"key" : "202",
"title" : "Sub Section 2.B"
}, {
"key" : "203",
"title" : "Sub Section 2.C"
}
],
"title" : "Section 2"
}]
...そして、次のように、要素をネストしていると想定する標準的な例を使用して、それを見出しと小見出しに変えようとします:
d3.select("body").selectAll("h1")
.data(data)
.enter()
.append("h1")
.text(function(d) {return d.title })
.selectAll("h2")
.data(function(d) { return d.values })
.enter()
.append("h2")
.text(function(d) {return d.title})
もちろん、ネストされた要素になってしまいますが、これは私が望むものではありません:
<h1>Section 1
<h2>Sub Section 1.A</h2>
<h2>Sub Section 1.B</h2>
<h2>Sub Section 1.C</h2>
</h1>
<h1>Section 2
<h2>Sub Section 2.A</h2>
<h2>Sub Section 2.B</h2>
<h2>Sub Section 2.C</h2>
</h1>
代わりにこれを入手するにはどうすればよいですか?
<h1>Section 1</h1>
<h2>Sub Section 1.A</h2>
<h2>Sub Section 1.B</h2>
<h2>Sub Section 1.C</h2>
<h1>Section 2</h1>
<h2>Sub Section 2.A</h2>
<h2>Sub Section 2.B</h2>
<h2>Sub Section 2.C</h2>