我查找了 Highcharts 的 API 参考,但找不到特定的函数来选择时间范围。
我的目的是将函数绑定到输入按钮。当我点击它时,它会选择一个范围。
我发现在 Highstock 中有一个带有内置按钮的范围选择器。
Highcharts 中是否有任何现有功能可以做到这一点?或者我如何使用自定义 javascript 来做到这一点?
我查找了 Highcharts 的 API 参考,但找不到特定的函数来选择时间范围。
我的目的是将函数绑定到输入按钮。当我点击它时,它会选择一个范围。
我发现在 Highstock 中有一个带有内置按钮的范围选择器。
Highcharts 中是否有任何现有功能可以做到这一点?或者我如何使用自定义 javascript 来做到这一点?
如果您能够使用内置范围选择器,请尝试指定selected
选项 (api reference),如下所示:
rangeSelector: {
enabled:true,
buttons: [
{type: 'week', count: 6, text: '6w'},
{type: 'week', count: 12, text: '12w'}
],
selected: 1 // uses a zero-based index
},
如果这不适合您的需求,并且您正在从 json 读取图表数据,那么您可以尝试以下操作:
$('#button_id_value').click(function() {
buildChart(some_hardcoded_time_value_selection); // you will have to specify a value that matches your json data
});
function buildChart(selected_time_value){
d3.json("/path/to/your/data.json", function(error, json_data) {
if (error) return console.warn(error);
chart_series = json_data.filter(function(d, i){
return (selected_time_value == d["time_value"]);
});
$('#container').highcharts({
chart: {type: 'column'},
// ... more chart options ...
series: chart_series,
// ... more chart options ...
});
});
});
仅供参考 - 最后一个解决方案需要d3和 jquery。
如果您想要一些简单的东西,例如通过选择图形区域而不需要用户交互的预设范围,您可以使用此链接中解释的内容。
稍微改进一下,这个想法是您的按钮处理范围所需的值并将它们提供给下面的函数。当它运行时,图表会重新绘制,反映新的范围。
function renderGraph(xmin, xmax, ymin, ymax){
var chart = new Highcharts.Chart({
xAxis: {
min: xmin,
max: xmax
},
yAxis: {
min: ymin,
max: ymax
},
chart: {
renderTo: "graph-container",
},
title: { text: null },
credits: { enabled: false}
});
}
希望能帮助到你。