上部に四分の一、左側に値を持つテーブルをプログラムで d3 に作成しようとしています。Quarters のベクトルが与えられた場合、["q1", "q2", "q3", "q4"]
次のテーブルが必要です。
| q1 | q2 | q3 | q4 |
v1 | | | | |
v2 | | | | |
以下のコードを実行すると、次のようになります。
| q2 | q3 | q4 |
v1 | | | |
v2 | | | |
最初の列が欠落していることに注意してください。次のコードを使用しています。
var qtrs = ["q1", "q2", "q3", "q4"];
var info = d3.select("body"),
thead = info.append("thead"),
tbody = info.append("tbody");
thead.append("tr").append("th").text("")
thead.select("tr")
.selectAll("th")
.data(qtrs)
.enter()
.insert("th")
.text(function (d) { return (d); });
tbody.append("tr").insert("td").text("Value 1")
tbody.append("tr").insert("td").text("Value 2")
tbody.selectAll("tr").selectAll("td").data(qtrs).enter()
.append("td").text("0.0");
ここでも入手できます:http://jsfiddle.net/TpCJk/
私が苦労してdata(qtrs)
いる部分は、残りの列を自動的に生成するために使用しながら、テーブルに単一の要素 (つまり最初の列) を手動で選択/追加する方法です。
起こっているように見えるのは、selectAll が (手動で作成された) 空のセルも選択して上書きしていることです。後で最初の列を追加しようとしました(thead.select("tr").insert("th").text("...");
作成後に配置しますが、最初th
ではなく、常にテーブルの最後に配置されるようです。
ここでのqtrs
配列は一例であることに注意してください。私の完全なアプリケーションでは、渡されたデータに依存します (つまり、より長くても短くてもかまいません)。「Value 1」と「Value 2」の行は固定です。
どんな助けでも大歓迎です!