D3.js を使用して、JSON ファイルから棒グラフを作成しています。ユーザーがさまざまな年やさまざまな国をフィルター処理できるようにします。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 配列を切り替えるにはどうすればよいですか (将来的にはそれ以上)、最後に選択された年を覚えていますか?