Highcharts / Highstock 滚动默认位置
Highcharts / Highstock scroll default position
我有一个 HighStock 收费,其滚动条与这个非常相似
Highcharts.stockChart('container', {
rangeSelector: {
selected: 1
},
title: {
text: 'AAPL Stock Price'
},
navigator: {
enabled: false
},
series: [{
name: 'AAPL Stock Price',
data: data,
tooltip: {
valueDecimals: 2
}
}]
});
我希望默认滚动位置位于图表中间的某个位置,有什么办法可以做到这一点吗?
您可以通过 xAxis.setExtremes
on the chart.events.load
调用来完成此操作。一个简单的例子(使用任意 1 年范围):
chart: {
events: {
load: function() {
this.xAxis[0].setExtremes(
Date.UTC(2013, 0, 1),
Date.UTC(2013, 11, 31)
);
}
}
},
例子jsFiddle.
如果您需要确定您的 "middle" 是什么,它可以取决于您的数据源,您可以在其中预先计算它,或者您也可以在 chart.events.load
调用中进行计算。
为了好玩,我添加了中点计算。这使用 moment.js 因为它比滚动你自己的时间方法容易得多。
minX = data[0][0];
maxX = data[data.length - 1][0];
midX = minX + ((maxX - minX) / 2);
var midDate = new Date(midX);
var startDate = moment(midDate);
var endDateMoment = moment(midDate);
startDate.subtract(1.5, 'months');
endDateMoment.add(1.5, 'months');
请注意,我 addinng/subtracting 1.5 个月才能使您的 3 个月范围选择器有效。 moment.js 图书馆将这些时间四舍五入到 2 个月。你明白了。所以你的 setExtremes
变成:
this.xAxis[0].setExtremes(
startDate.valueOf(), //.valueOf() in this context converts to javascript time
endDateMoment.valueOf()
);
这是直播 jsFiddle。
我有一个 HighStock 收费,其滚动条与这个非常相似
Highcharts.stockChart('container', {
rangeSelector: {
selected: 1
},
title: {
text: 'AAPL Stock Price'
},
navigator: {
enabled: false
},
series: [{
name: 'AAPL Stock Price',
data: data,
tooltip: {
valueDecimals: 2
}
}]
});
我希望默认滚动位置位于图表中间的某个位置,有什么办法可以做到这一点吗?
您可以通过 xAxis.setExtremes
on the chart.events.load
调用来完成此操作。一个简单的例子(使用任意 1 年范围):
chart: {
events: {
load: function() {
this.xAxis[0].setExtremes(
Date.UTC(2013, 0, 1),
Date.UTC(2013, 11, 31)
);
}
}
},
例子jsFiddle.
如果您需要确定您的 "middle" 是什么,它可以取决于您的数据源,您可以在其中预先计算它,或者您也可以在 chart.events.load
调用中进行计算。
为了好玩,我添加了中点计算。这使用 moment.js 因为它比滚动你自己的时间方法容易得多。
minX = data[0][0];
maxX = data[data.length - 1][0];
midX = minX + ((maxX - minX) / 2);
var midDate = new Date(midX);
var startDate = moment(midDate);
var endDateMoment = moment(midDate);
startDate.subtract(1.5, 'months');
endDateMoment.add(1.5, 'months');
请注意,我 addinng/subtracting 1.5 个月才能使您的 3 个月范围选择器有效。 moment.js 图书馆将这些时间四舍五入到 2 个月。你明白了。所以你的 setExtremes
变成:
this.xAxis[0].setExtremes(
startDate.valueOf(), //.valueOf() in this context converts to javascript time
endDateMoment.valueOf()
);
这是直播 jsFiddle。