不使用注释图表的最佳方法是遵循WhiteHat在评论中的提示,添加
CharRangeFilter并更改其状态。
如Google Developers
page所述,在更改状态后需要调用
draw()
方法:
“经验法则是直接在特定的
ControlWrapper
(或
ChartWrapper
)实例上执行任何所需的更改:例如,通过
setOption()
和
setState()
分别更改控件选项或状态,并在之后调用其
draw()
方法。”
var dash = new google.visualization.Dashboard(document.getElementById('dashboard'));
var chart = new google.visualization.ChartWrapper({
chartType: 'ComboChart',
containerId: 'chart_div',
options: {
legend: {
position: 'bottom',
alignment: 'center',
textStyle: {
fontSize: 12
}
},
explorer: {
actions: ['dragToZoom', 'rightClickToReset'],
axis: 'horizontal',
keepInBounds: true
},
hAxis: {
title: 'X'
},
pointSize: 3,
vAxis: {
title: 'Y'
}
}
});
var control = new google.visualization.ControlWrapper({
controlType: 'ChartRangeFilter',
containerId: 'control_div',
options: {
filterColumnIndex: 0,
ui: {
chartOptions: {
height: 50,
chartArea: {
width: '75%'
}
}
}
}
});
dash.bind([control], [chart]);
dash.draw(data);
setTimeout(function () {
control.setState({range: {
start: new Date(2016, 6,1),
end: new Date()
}});
control.draw();
}, 3000);
我在 JSFiddle 上创建了一个可运行的示例。
ChartRangeFilter
类似于AnnotationChart
底部的控件 --DateRangeFilter
也可用... - WhiteHatChartRangeFilter
是最接近应用程序需求的控件。您认为我能否通过编程方式更改其状态属性中的range.start
和range.end
值呢? - HicarosetState
方法 -->filter.setState({range: {start: a, end: b}})
- WhiteHat