2

現在、22 前後の Highcharts グラフィックを含むページがあり、ユーザーが選択できるフィルターの対象になっています。各フィルター操作により、現在のシリーズが削除され、新しいシリーズが追加されます。

私は 2 つのアプローチから始めました。

while currentChart.series.length > 0
  currentChart.series[currentChart.series.length - 1].remove()

次に、配列を通過してフィルター データを検索する別のループの後、

currentChart.addSeries
  name: operatorName
  data: data
  type: options.chartType

しかし、この実装は非常に重いことが判明しました。

次に、タイムアウトを実装して、プラグインが少し呼吸し、それほどスタックしないようにしました。各ループ間に 1 ミリ秒のタイムアウトを設定することで、パフォーマンスが向上し、アニメーションを見ることができましたが、少し遅くなりました。タイムアウトを高く設定すると、ページのナビゲートが難しくなり、グラフィックの更新全体に時間がかかるため、フィルターの変更がスタックします。

4

2 に答える 2

3

私の経験では、グラフやデータポイントが多数ある場合、通常はアニメーションをオフにします。アニメーションは処理のオーバーヘッドを大幅に増加させますが、それがなければ、ハイチャートは通常、大量のデータを非常にうまく処理します。

すべてを削除してからすべてを追加するのではなく、一度に各チャートのシリーズを削除して新しいものを追加してみてください。ただし、これがページの応答性に大きな違いをもたらすとは思いません。

  chart: {
      animation: false
  },
  plotOptions: {
        series: {
            animation: false
        }
  },
于 2013-09-24T09:19:58.883 に答える
0
while currentChart.series.length > 0
  currentChart.series[0].destroy()

例: http://jsfiddle.net/5B9c7/1/

于 2013-12-12T09:53:15.173 に答える