Javascript 与前一天相比的Highstock系列

Javascript 与前一天相比的Highstock系列,javascript,highcharts,highstock,Javascript,Highcharts,Highstock,我已经实现了如下所示的HighStock图表: 此图表显示了与第一个或最左侧数据点的百分比变化。我有一些股票分析师告诉我,这没有多大用处,他们宁愿看到以前数据点的百分比变化,或者换句话说,如果我看图表上的“今天”,我希望看到昨天的百分比变化。我查看了highstock API,但似乎找不到定义百分比变化函数的方法。有没有合适的方法让highstock这样做,或者我应该使用highcharts折线图来完成这项工作?我以前在highcharts中也做过类似的事情。我想得到从一个数据点到下一个数据点

我已经实现了如下所示的HighStock图表:


此图表显示了与第一个或最左侧数据点的百分比变化。我有一些股票分析师告诉我,这没有多大用处,他们宁愿看到以前数据点的百分比变化,或者换句话说,如果我看图表上的“今天”,我希望看到昨天的百分比变化。我查看了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轴上的标签会改变以反映范围的百分比变化。把它限制在一天,也许几天,你会更准确地看到它。