Javascript 与前一天相比的Highstock系列
我已经实现了如下所示的HighStock图表:Javascript 与前一天相比的Highstock系列,javascript,highcharts,highstock,Javascript,Highcharts,Highstock,我已经实现了如下所示的HighStock图表: 此图表显示了与第一个或最左侧数据点的百分比变化。我有一些股票分析师告诉我,这没有多大用处,他们宁愿看到以前数据点的百分比变化,或者换句话说,如果我看图表上的“今天”,我希望看到昨天的百分比变化。我查看了highstock API,但似乎找不到定义百分比变化函数的方法。有没有合适的方法让highstock这样做,或者我应该使用highcharts折线图来完成这项工作?我以前在highcharts中也做过类似的事情。我想得到从一个数据点到下一个数据点
此图表显示了与第一个或最左侧数据点的百分比变化。我有一些股票分析师告诉我,这没有多大用处,他们宁愿看到以前数据点的百分比变化,或者换句话说,如果我看图表上的“今天”,我希望看到昨天的百分比变化。我查看了highstock API,但似乎找不到定义百分比变化函数的方法。有没有合适的方法让highstock这样做,或者我应该使用highcharts折线图来完成这项工作?我以前在highcharts中也做过类似的事情。我想得到从一个数据点到下一个数据点的实际变化 我要做的是,我看一下当前点(这个.x),然后找到它在序列数组中的位置。从那里,我很容易找到上一点的索引(index=a-1)并进行计算。希望这有帮助:) 编辑: 查看stockcharts API并为该产品找到了解决方案:
tooltip: {
formatter: function() {
var s = '<b>'+ Highcharts.dateFormat('%A, %b %e, %Y', this.x) +'</b><br>';
$.each(this.points, function(i, point) {
s += '<span style="font-weight: bold; font-size: 1.2em; color: ' + point.point.series.color + ';">' + point.point.series.name + '</span>:<span style="font-weight: bold; font-size: 1.2em;">' + point.y + '</span>' ;
s += '<span style="font-size: .8em;">';
var target = this.x;
index = 0;
for (var a = 0; a < point.series.points.length; a++) {
if (point.series.points[a].x == target)
{
index = a - 1;
}
}
var delta = 0;
var change = 0;
if (index >= 0)
{
delta = this.y - point.series.points[index].y;
change = (delta / point.series.points[index].y) * 100;
}
s += Math.round(change,2) + '%</span>';
s +='</span><br>';
});
return s;
}
},
工具提示:{
格式化程序:函数(){
var s=''+Highcharts.dateFormat('%A,%b%e,%Y',this.x)+'
';
$.each(this.points,function(i,point){
s+=''+point.point.series.name+':''+point.y+'';
s+='';
var target=this.x;
指数=0;
对于(var a=0;a=0)
{
delta=this.y-point.series.points[index].y;
change=(delta/point.series.points[index].y)*100;
}
s+=数学四舍五入(变化,2)+'%';
s+='
';
});
返回s;
}
},
还有一个正在工作的jsfiddle:你试过什么?只是一个提示,你必须自己做,将焦点与工具提示格式化程序中的最后一个焦点进行比较。这不仅仅是工具提示格式化程序的问题。如果我只更改了工具提示格式化程序,那么工具提示将显示与图表本身不同的数据,因为图表本身仍将绘制第一个点的百分比变化。因此,看起来您将错误的数据传递给highcharts,对吗?我认为您需要在后端处理图表数据,然后将其传递到前端,在那里进行渲染。感谢您的帮助Ricardo。这不是传递错误数据的问题。我知道我可以自己计算百分比变化,并使用基于直线的highchart获得类似效果,但我要问的是,问题中给出的链接上显示的highstock图表是否在highstock API中有某种类型的设置可用(我已经查看过,未成功)因此,我可以改变它用于根据昨天计算的百分比变化函数,而不是数据点0,因为这似乎是一个常见的用例。感谢您的努力,但在这种变化中,图形和工具提示不会显示相同的数据。工具提示显示从昨天开始的百分比变化,而y轴和直线本身显示从点0开始的百分比变化。嗯。。我认为你应该只把你看到的范围限制在最后一个数据点上。当你改变你所看到的范围时,y轴上的标签会改变以反映范围的百分比变化。把它限制在一天,也许几天,你会更准确地看到它。