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 に答える