1

Highstock/Highchart を使用してデータを表示しようとしています。私のデータでは、各レコード間の間隔は 1 ミリ秒です。各ティック間の長さを 40 ミリ秒に設定したいので、tickInterval を 40 に設定して試しましたが、グラフでは各ティック間に 50 を示しています。30 に設定すると、グラフは 25 を示します。非常に奇妙です。どうすればよいかわかりません。助けてください。

リンク: http://jsfiddle.net/xEcNS/1/

ありがとうございます

4

2 に答える 2

2

ハイストックのソースコードを調べたところ、このコードが見つかりました

function normalizeTimeTickInterval(tickInterval, unitsOption) {
 var units = unitsOption || [[
 MILLISECOND, // unit name
 [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples 
 ...
}

このコードは何ですか?時間の単位がミリ秒の場合、tickInterval (あなたの場合は 40) をこれらの 1 つの倍数に正規化すると、40 から 50 および 30 から 25 に正規化されます。オプションからオーバーライドされます。ただし、それが受け入れられ、著作権法に違反しない場合は、コードを変更するオプションがあります。

編集:ソースコードチェックフィドル@ http://jsfiddle.net/jugal/H83bs/を変更せずにこれを機能させるハックを見つけました

これが私がしたことです。ソースコードの少しのデバッグ/分析により、ハイチャートが最初に軸のオプションの units プロパティで単位を見つけようとするヒントが得られました。見つからない場合は、デフォルトのものを使用します。そこで、units プロパティを微調整して次のように設定しました。これは、highcharts コンストラクターを呼び出す前に行う必要があります。

Highcharts.Axis.prototype.defaultOptions.units=[[
            'millisecond',
            [1, 2, 5, 10, 20, 25,30,40, 50, 100, 200, 500]
        ], [
            'second',
            [1, 2, 5, 10, 15, 30]
        ], [
            'minute',
            [1, 2, 5, 10, 15, 30]
        ], [
            'hour',
            [1, 2, 3, 4, 6, 8, 12]
        ], [
            'day',
            [1]
        ], [
            'week',
            [1]
        ], [
            'month',
            [1, 3, 6]
        ], [
            'year',
            null
        ]];
于 2012-08-06T11:16:22.460 に答える
0

Highstock は、提供された正確な値を として設定しませんtickInterval

デフォルトでは、ユニットをループして、に最適なユニットを見つけますtickInterval

[1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // ミリ秒の倍数を許可

[1, 2, 5, 10, 15, 30] // 秒

[1, 2, 5, 10, 15, 30] // 分

[1, 2, 3, 4, 6, 8, 12] // 時間

[1, 2] // 日

[1, 2] // 週

[1, 2, 3, 4, 6] //月

したがって、入力は、最も近い最適な一致を検索することによって設定されます。

于 2012-08-06T10:56:37.813 に答える