Im使用D3.js從JSON文件創建條形圖。我希望用戶通過不同的年份和不同的國家進行篩選。我似乎無法弄清楚如何從JSON文件中選擇不同的數組。如何用D3.js選擇JSON數組。運算符
我的JSON設置是這樣的:(這可能是錯誤的)
var NL = [
j1996 = [20317, 27395, 29273, 27170, 19441],
j1997 = [25267, 31331, 35193, 35299, 23005],
j1998 = [25576, 30643, 35484, 35796, 23343]
]
var BE = [
j1996 = [52317, 17395, 39273, 47170, 39441],
j1997 = [35267, 13331, 15193, 15299, 13005],
j1998 = [15576, 20643, 14284, 25796, 13343]
]
然後,我有從不同年份加載數據按鈕:
d3.select("#button1996")
.on("click", function (d, i) {
bars(j1996);
})
d3.select("#button1997")
.on("click", function (d, i) {
bars(j1997);
})
d3.select("#button1998")
.on("click", function (d, i) {
bars(j1998);
})
酒吧功能
function bars(data) {
max = d3.max(data)
var yScale = d3.scale.linear()
.domain([0, d3.max(data)])
.range([0, height])
var xScale = d3.scale.ordinal()
.domain(d3.range(0, data.length))
.rangeBands([0, width], .2)
var myChart = d3.select("#chart")
var bars = myChart.selectAll("rect.bar")
.data(data)
//enter
bars.enter()
.append("svg:rect")
.attr("class", "bar")
.style('fill', '#C64567')
.attr('width', xScale.rangeBand())
.attr('x', function(d,i){ return xScale(i); })
.attr('height', 0)
.attr('y', height)
}
此作品
d3.select("#button1996")
.on("click", function (d, i) {
bars(NL[0]);
})
如何在NL和BE陣列之間切換(在未來更多)但記住上次選擇的年份?
你的'酒吧'功能是什麼樣子?您需要添加更多代碼... – thatOneGuy
感謝您的關注!我已經添加了條形函數,並在底部稍微修改了這個問題。 – user1892747