2017-09-23 44 views
0

現在、プロットエンジンとPythonを使用して、散布図に膨大な量のX、Yデータをプロットするのに問題があります。したがって、ブラウザは実際には時間の経過後にクラッシュせずにこの量の点をレンダリングできません。 (私もScatterglオプションhttps://plot.ly/python/webgl-vs-svg/を試してみた)散布図のデータ点数を減らす方法は?

散布図の元の形状を失うことなくポイントのこの巨大な量を減らすために任意のアルゴリズムがありますか?反復エンドポイントフィットアルゴリズムのようなものでしょうか?

EDIT:

いくつかのコード

import plotly.plotly as py 
import plotly.graph_objs as go 
from plotly.offline import plot 

import numpy as np 

N = 1000000 
trace = go.Scattergl(
    x = np.random.randn(N), 
    y = np.random.randn(N), 
    mode = 'markers', 
    marker = dict(
     line = dict(
      width = 1, 
      color = '#404040') 
    ) 
) 
data = [trace] 

layout = go.Layout(title='A Simple Plot', width=1000, height=350) 

fig = go.Figure(data=data, layout=layout) 

plot(fig) 
+0

あなたのコードを含めてください。 –

+0

[Minimal、Complete、Verifiable](https://stackoverflow.com/help/mcve)の例を含めることができますか?私は "答え"がありますが、あなたのコードなしでは適切なものを書くことができません。 –

+0

コードを追加しました。 –

答えて

0

あなただけのデータポイントが存在する領域を視覚化しようとしている場合、それは密度のグリッドにX-Yデータを変換するために、より効果的かもしれません。これは散布図より優れているかもしれません。なぜなら、非常に多くの点を持つとき、点が互いにあいまいになる可能性があるため、特定の領域にいくつの点があるのか​​分からないからです。

私はプロットに慣れていません(私はmatplotlib.pyplotを使用しています)が、少なくともone way to do thisがあります。

0

1つの方法は、散乱点からランダムにサンプリングすることです。あなたが十分なポイントをサンプリングしている限り、あなたは同様の形をしている可能性が非常に高いです。ランダムにあなたはこのスニペットは愚かに見えるかもしれませんが、現実には、あなたが代わりにnp.random.randn(N)の実際の配列を持っていますので、それが作るだろう

i_plot = np.random.choice(N, size=10000, replace=False) 
trace = go.Scattergl(
    x = np.random.randn(N)[i_plot], 
    y = np.random.randn(N)[i_plot], 
    mode = 'markers', 
    marker = dict(
     line = dict(
      width = 1, 
      color = '#404040') 
    ) 
) 

を使用する100万点を万をサンプリングする例えば

、これらの配列から無作為にサンプリングすることができます。

異なる数の点をテストし、おそらくエンジンが遅れたりクラッシュすることなく処理できる最大点数に増やしたいと思うでしょう。