web-dev-qa-db-ja.com

ハイチャートは、データポイントが多い系列を表示しません

ユーザーからの日付範囲に基づいて表示したいグラフがあります。この特定のグラフには、15分ごとのデータポイントがあります。したがって、ユーザーが広い日付範囲を選択した場合、各シリーズに多くのデータポイントが存在する可能性があります。次にいくつかの例を示します。

最初の例では、チャートは表示されます。 2番目の例では、チャートは表示されません。多くのデータポイントで機能するHighstockデモ( データグループ化で52,000ポイント )があります。上記のチャートを高値チャートに変更しようとしましたが、それでも同じ結果が得られます。

これを修正するにはどうすればよいですか?

13
Linger

これは ターボしきい値 オプションによるものです:

「シリーズにこれより長いデータ配列が含まれている場合、数値の1次元配列、またはx値とy値を持つ2次元配列のみが許可されます。また、最初の点のみがテストされ、残りは同じフォーマット。これにより、長いシリーズでの高価なデータチェックとインデックス作成を節約できます。」

デフォルトでは1000ポイントに設定されています。シリーズの各ポイントがオブジェクトであり、その数がしきい値よりも大きいため、グラフはレンダリングされません。

これは jfFiddle で、しきい値を2000に設定してプロットが機能することを示しています。

コードの変更されたセクションは次のとおりです。

plotOptions: {
     spline: {
     turboThreshold: 2000,
    ...

別の解決策は、各ポイントをx-yプロパティで表したオブジェクトにする代わりに、シリーズデータを2次元配列でエンコードすることです。

23
Greg Ross

pHPで応答を生成する場合、turboThreshholdの回避策は次のようになります。

                    if(count($responseObj) > 1000){
                    $modolo = round(count($responseObj) / 1000);
                    for($i = count($responseObj)-1; $i >= 0 ; $i--){
                        if(($i % $modolo) != 0){
                            unset ($responseObj[$i]);
                        }
                    }
                    $responseObj = array_merge($responseObj);
                }
0
Dangerdave