Javascript 放大JS HighCharts后获取最大值并按系列添加标签
我正在研究这个例子: 我手动调用zoom(修改后的图表有两个系列),其中: 现在我想得到这个范围内序列的最大值,以及该点的标签/日期。我可以通过以下方式获得最大值:Javascript 放大JS HighCharts后获取最大值并按系列添加标签,javascript,highcharts,Javascript,Highcharts,我正在研究这个例子: 我手动调用zoom(修改后的图表有两个系列),其中: 现在我想得到这个范围内序列的最大值,以及该点的标签/日期。我可以通过以下方式获得最大值: maxInRange = chart.series[0].dataMax 但我不知道如何找到该点的日期/标签。我可以调用和任意数据点: chart.series[0].xData['222'] 它返回了一个日期,但我在寻找类似于: chart.series[0].xData[maxInRange] (不起作用)或类似,以获取最
maxInRange = chart.series[0].dataMax
但我不知道如何找到该点的日期/标签。我可以调用和任意数据点:
chart.series[0].xData['222']
它返回了一个日期,但我在寻找类似于:
chart.series[0].xData[maxInRange]
(不起作用)或类似,以获取最大值的日期点
干杯,谢谢你的帮助
- 更新哟 所以现在我想这可能管用
maxDateY = chart.series[0].yData.indexOf(maxInRange)
它将返回最大值在y数据中的位置的索引,然后将其传递给扩展数据,如中所示:
maxDateX = chart.series[0].xData[maxDateY]
这很酷,但不幸的是,我不认为yData.indexOf调用被限制在setextrems命令设置的范围内。因此,它返回整个数据集中的第一个匹配实例。很近,但没有雪茄
还有其他想法吗?感谢您的帮助。您可以在xAxis上捕捉afterSetExtremes,然后在系列的每个点上迭代,比较最小值/最大值
xAxis: {
events:{
afterSetExtremes:function() {
var minAxis = this.min,
maxAxis = this.max,
points = this.chart.series[0].points,
min = points[0].y,
max = points[0].y;
$.each(points, function(i, p) {
if(p.x >= minAxis && p.x <= maxAxis) {
if(p.y > max)
max = p.y;
if(p.y < min)
min = p.y;
}
});
$('#info').html('MIN: ' + min + ' MAX: ' + max);
}
},
type: 'datetime',
minRange: 14 * 24 * 3600000 // fourteen days
},
xAxis:{
活动:{
AfterSetExtrems:函数(){
var minAxis=this.min,
maxAxis=this.max,
points=this.chart.series[0]。点,
最小值=点[0]。y,
最大值=点[0]。y;
$。每个(点、功能(i、p){
如果(p.x>=minAxis&&p.x max)
max=p.y;
如果(p.y
示例:塞巴斯蒂安的解决方案效果很好。 要关注最大值并获取可使用的标签/日期,请执行以下操作:
events:{
afterSetExtremes:function() {
var minAxis = this.min,
maxAxis = this.max,
points = this.chart.series[0].points,
max = points[0].y,
xValue = 0,
label = '';
$.each(points, function(i, p) {
if(p.x >= minAxis && p.x <= maxAxis) {
if(p.y > max) {
max = p.y;
xValue = p.x;
}
}
maxDate = new Date(maxAxis);
});
label = new Date(xValue);
$('#info').html(' MAX: ' + max + ' Label:' + label);
}
},
事件:{
AfterSetExtrems:函数(){
var minAxis=this.min,
maxAxis=this.max,
points=this.chart.series[0]。点,
最大值=点[0]。y,
xValue=0,
标签='';
$。每个(点、功能(i、p){
如果(p.x>=minAxis&&p.x max){
max=p.y;
xValue=p.x;
}
}
maxDate=新日期(maxAxis);
});
标签=新日期(xValue);
$('#info').html('MAX:'+MAX+'Label:'+Label);
}
},
谢谢!工作得很有魅力。作为对其他人的提醒,在xAxis中抛出以下groovy事件:{}。干杯此外,如果最大值恰好位于序列的第一个点,则为标签输入:,if(xValue==0){label=new Date(minAxis)}else{label=new Date(xValue);}有助于避免返回0或错误的1970年日期。
events:{
afterSetExtremes:function() {
var minAxis = this.min,
maxAxis = this.max,
points = this.chart.series[0].points,
max = points[0].y,
xValue = 0,
label = '';
$.each(points, function(i, p) {
if(p.x >= minAxis && p.x <= maxAxis) {
if(p.y > max) {
max = p.y;
xValue = p.x;
}
}
maxDate = new Date(maxAxis);
});
label = new Date(xValue);
$('#info').html(' MAX: ' + max + ' Label:' + label);
}
},