2

我已经实现了显示在以下位置的 HighStock 图表:

http://www.highcharts.com/stock/demo/compare

此图表显示了与第一个或最左侧数据点相比的百分比变化。我有一些股票分析师告诉我这没什么用,他们宁愿看到与先前数据点相比的百分比变化,或者换句话说,如果我在图表上查看“今天”,我会想看看昨天的百分比变化。我查看了 highstock API,似乎找不到定义百分比变化函数的方法。有没有合适的方法让 highstock 做到这一点,或者我应该使用 highcharts 折线图来完成这个?

4

1 回答 1

5

我以前必须在高图表中做类似的事情。我想获得从一个数据点到下一个数据点的实际变化。

我所做的是查看当前点 (this.x),并找到它在系列数组中的位置。从那里,我很容易找到前一点的索引(索引 = 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;
    }
},

还有一个工作的jsfiddle:http: //jsfiddle.net/nLjsc/2/

于 2012-09-07T21:21:16.937 回答