イントロ:
私はブラウザーでプロットする必要のある巨大なデータセットを使用しています。最大100万ポイントになる可能性があるため、私の考えは、異なるズームレベルに対して異なる表現を作成することでした。
100kポイントあるとしましょう。50kになるまで2つずつ平均し、500ポイント(任意のしきい値)未満になるまでそれを繰り返します。
したがって、最もズームアウトしたレベルでは、グラフのサイズに応じて500ポイントすべてまたはその一部を描画し、ズームインすると、次のズームレベルに切り替わります(ユーザーが選択範囲をドラッグするとデータをストリーミングしますl / r) )、そして最終的にユーザーが細かい細部を見たい場合は、0ズームレベルにズームしてすべての細部を見ることができます。
私は実際にこのプロトタイプを作成し、1つのことを除いて非常にうまく機能しています。これの副作用は、ご想像のとおり、平均化の反復でピークが失われることです。
Douglas-Peuckerアルゴリズムと、それがどのようにピークを維持できるかについていくつかの調査と発見を行い、いくつかのテストを行いましたが、それは非常にうまく機能しましたが、それに関する問題は、一連のデータ(y値)に遭遇した場合です[1 、1、1、1、5、6、1、1、1、1、1、1] [1,6,1,1]のようなものにスムーズにします。このようにズームレベルの比率を維持
n(元のデータの長さ)> n / 2> n / 4> n / 8> .....
私はラインスムージングに関する論文をほとんど読んでいませんが、見つけたすべてのアルゴリズムは距離のしきい値を受け入れており、パラメーターとしてスムージングに使用しています。また、それらのどれも、目的の出力要素の数を受け入れることができません。行、彼らはこのようなシーケンス(y値)[1,1,1,1,1,1,1,1,1,1,1]を[1,1]に変換します
だから、最後に、私の質問:
次のようなアルゴリズムはありますか?
- 通常の距離しきい値の代わりに、必要な数の出力要素を受け入れます
- (Douglas-Peuckerと同様に)ピークを保持しようとします
- (y値)[1,1,1,1,1,1]を取得し、3つの出力が必要だと言っても、理論的には[1,1]として平滑化することが正しい場合、イベントは均一にデータを平滑化します代わりに[1,1,1]を取得する必要があります
また、すべてのデータは1からnまで1のステップで測定されるため、N / A値、空白のスポット、[1.3のような値はないため、X軸情報の欠如と混同しないでください。 、1.4、3]
xは常に[1,2,3 .... n]です