gpt4 book ai didi

javascript - 展平使用 d3.js 嵌套创建的对象层次结构

转载 作者:数据小太阳 更新时间:2023-10-29 04:48:21 25 4
gpt4 key购买 nike

我正在尝试以如下方式可视化团队协作数据:

Chart that displays the share of the different collaboration artifact types for each team and week

图表中的不同颜色表示不同的协作工件类型。

来自源的数据如下所示:

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 */
]

请注意,数据是针对单日给出的。所以对于上面的可视化,我需要首先根据一年中的星期聚合数据。团队名称和工件类型需要保留并用作分组属性。这是代码:

// "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
},
{
...
}
]
},
{
...
}
]

这样我就可以使用createdWeekteamLabel分别在x轴和y轴上定位,以及values下的信息可以传递给 d3.layout.pie()

有没有一种干净的方法来进行这种数据转换?如果您需要任何说明或更多详细信息,请告诉我。

最佳答案

这就是你的做法:

var flat = data.entries().map(function(d){
return d.value.entries().map(function(e){
return {
"teamLabel": d.key,
"createdWeek": e.key,
"values": e.value.entries().map(function(f){
return {"typeLabel": f.key, "count": f.value}
})
}
})
}).reduce(function(d1,d2){ return d1.concat(d2) },[]);

请注意,我使用的是 d3.map 而不是标准的 javascript 对象,以便使用 map.entries() 辅助函数。我想这就是您根据使用的事实来判断的尝试:

.map(json); // whereas I used .map(json, d3.map)

代替

.entries(json);

jsFiddle 链接在这里:

http://jsfiddle.net/RFontana/KhX2n/

关于javascript - 展平使用 d3.js 嵌套创建的对象层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14270011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com