次のような方法で、チーム コラボレーション データを視覚化しようとしています。
グラフ内のさまざまな色は、さまざまなコラボレーション アーティファクト タイプです。
ソースからのデータは次のようになります。
var json = [
{
"teamLabel": "Team 1",
"created_date": "2013-01-09",
"typeLabel": "Email"
"count": "5"
},
{
"teamLabel": "Team 1",
"created_date": "2013-01-10",
"typeLabel": "Email"
"count": "7"
},
/* and of course, a lot more data of this kind */
]
データは 1 日分であることに注意してください。したがって、上記の視覚化では、最初に週に基づいてデータを集計する必要があります。ただし、チーム名と案件タイプは保持する必要があり、グループ化属性として使用されます。コードは次のとおりです。
// "2013-01-09"
var dateFormat = d3.time.format.utc("%Y-%m-%d");
// "2013-02" for the 2nd week of the year
var yearWeek = d3.time.format.utc("%Y-%W");
var data = d3.nest().key(function(d) {
return d.teamLabel;
}).key(function(d) {
var created_date = dateFormat.parse(d.created_date);
return yearWeek(created_date);
})
.key(function(d) {
return d.typeLabel;
}).rollup(function(leaves) {
return d3.sum(leaves, function(d) {
return parseInt(d.count); // parse the integer
});
}
)
.map(json);
これにより、ネスト キーに基づくオブジェクト階層が作成されます。data
これから上記のチャートを作成する方法がわからないので、次の構造に変換する方法を探しています。
[
// This list contains an element for each donut
{
"teamLabel": "Team 1",
"createdWeek": "2013-02",
"values": [
// This list contains one element for each type we found
{
"typeLabel": "Email",
"count": 12
},
{
...
}
]
},
{
...
}
]
このようにして、x 軸と y 軸の配置にそれぞれ と を使用でき、以下の情報をcreatedWeek
に渡すことができます。teamLabel
values
d3.layout.pie()
このデータ変換を行うクリーンな方法はありますか? 説明や詳細が必要な場合は、お知らせください。