拥有json对象类型的数组。 Var数据有一个数组对象,如:
mPlayer.seekTo(progress * 1000);
字段字母有多组数据(例如:字母A有两组频率或更多)。我需要为它创建一个组图表。
0: Object
letter : A
frequency : .08167
1: Object
letter : B
frequency : .01492
2: Object
letter : C
frequency : .02780
3: Object
letter : A
frequency : .06167
4: Object
letter : D
frequency : .02492
5: Object
letter : C
frequency : .03780
这似乎不起作用。 var frequency= d3.keys(data[0]).filter(function (key) {
return (key !== "letter");
});
data.forEach(function (d) {
d.val = frequency.map(function (name) { return { name: name, value: +d[name] }; });
});
数据的结构有什么问题吗?
答案 0 :(得分:1)
从问题和评论中看来,您的数据似乎是这样的格式:
data = [
{ "letter": "A", "frequency": .08167, "year": 2015},
{ "letter": "B", "frequency": .01492, "year": 2015},
{ "letter": "C", "frequency": .02780, "year": 2015}...
在这种情况下,为分组条形图分组的最佳方法是使用d3.nest
:
var nested_data = d3.nest()
.key(function (d) {
return d.letter;
})
.entries(data);
将使用每个字母values
下的多个key
构建您的数据。
以下是您的数据的工作小提琴: http://jsfiddle.net/henbox/jc0nohhb/1/ ,从此示例中借鉴了很多:http://bl.ocks.org/mbostock/3887051
注意 - 这是一个很好的资源,可以在d3中详细了解nest
:http://bl.ocks.org/phoebebright/raw/3176159/