我是D3的新手,並且努力瞭解嵌套功能。我試圖制定一個條形圖,在2013年,2014年和2015年有三個不同的酒吧,每個酒吧的長度爲當年的參賽人數。如何在D3中使用嵌套和彙總函數來創建條形圖
我看了很多例子,但我錯過了一些步驟。我想知道如何查看/排除嵌套對我的數據的影響(列出鍵和值等)。我還想知道如何在簡單的條形圖中使用數據(我要調用哪些數據以及我該如何返回'身高'等)
我已經在這裏做了一個小提琴http://jsfiddle.net/hellococomo/zz81pwkm/4/但無法弄清楚爲什麼我不能在酒吧得到任何高度。我非常感謝任何幫助。
這是我的示例代碼:
var fruit = [
{"name": "Apple", "year": 2013, "win": "1"},
{"name": "Banana", "year": 2013, "win": "1"},
{"name": "Orange", "year": 2013, "win": "1"},
{"name": "Grapefruit", "year": 2013, "win": "0"},
{"name": "Grape", "year": 2014, "win": "0"},
{"name": "Pineapple", "year": 2014, "win": "1"},
{"name": "Melon", "year": 2014, "win": "1"},
{"name": "Grape", "year": 2014, "win": "1"},
{"name": "Pineapple", "year": 2014, "win": "1"},
{"name": "Pineapple", "year": 2015, "win": "1"},
];
data = d3.nest()
.key(function(d){ return d.year }) // `GROUP BY date`
.rollup(function(values){
// `values` is all the rows of a particular date
var counts = {}, keys = ['name', 'win']
keys.forEach(function(key){
counts[key] = d3.sum(values, function(d){ return d[key] })
})
return counts
})
.entries(fruit)
var svg =
d3.select('svg g')
.selectAll('rect')
.data(data)
.enter();
svg.append('rect')
.attr('x', function(d, i) {return i * 60 })
.attr('y', 50)
.attr('width', 50)
.attr('height', function(d) { return d['win'] })
.style('fill', 'steelblue');
你有沒有找到解決這個問題的方法?我現在有幾乎相同的問題! – 2015-12-03 18:27:39
@ user2063493我確實得到了更多,這可能有助於http://plnkr.co/edit/GPZ6Bt?p=info – user3821345 2015-12-06 12:34:59