nvd3水平チャートの動作を少し変更しようとしています。
現在、水平チャートには凡例があり、複数の凡例アイテムを同時に選択するオプションがあります。1つのシリーズを選択すると、他のシリーズの選択が解除されるように、一度に1つのアイテムのみを表示しようとしています。
var data = [
{
"key": "Series1",
"color": "#d62728",
"values": [
{
"label" : "A" ,
"value" : 1
} ,
{
"label" : "B" ,
"value" : 8
} ,
]
},
{
"key": "Series2",
"color": "#1f77b4",
"values": [
{
"label" : "C" ,
"value" : 25
} ,
{
"label" : "D" ,
"value" : 16
} ,
]
}
]
nv.addGraph(function() {
var chart = nv.models.multiBarHorizontalChart()
.x(function(d) { return d.label })
.y(function(d) { return d.value })
.margin({top: 30, right: 20, bottom: 50, left: 175})
.showValues(true)
.tooltips(false)
.showControls(false);
chart.yAxis
.tickFormat(d3.format(',.2f'));
d3.select('#chart svg')
.datum(data)
.transition().duration(500)
.call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
また、nv.d3.jsのmultiBarHorizontalChart部分を、6264行目から6272行目で次のように変更しました。
//============================================================
// Event Handling/Dispatching (in chart's scope)
//------------------------------------------------------------
data.map(function(d,i){
d.disabled= true;
return d;
});
これにより、ラジオボタンのように動作しますが、グラフが最初に読み込まれると、Series1とSeries2の両方が表示されます。
だから私の質問は「どうやって1つのシリーズだけを見えるようにするのですか?」です。