2016-08-15 5 views
3

性能面では、mayaviにプロットすると次のコードスニペットがうまく機能します。Pythonの10,000+ Point 3Dスキャッタプロット(クイックレンダリング付き)

import numpy as np 
from mayavi import mlab 

n = 5000 
x = np.random.rand(n) 
y = np.random.rand(n) 
z = np.random.rand(n) 
s = np.sin(x)**2 + np.cos(y) 

mlab.points3d(x, y, z, s, colormap="RdYlBu", scale_factor=0.02, scale_mode='none') 

しかしmayaviは一度チョークを開始します。 matplotlibの類似の3Dプロットルーチン(Axes3D.scatter)は、このサイズのデータ​​セットで同様に苦労しています(最初はmayaviを調べ始めました)。

最初に、10,000+ポイント散布図をレンダリングするのがはるかに簡単になるように、私が紛失しているmayavi(些細でも重要なものでも)に何かがありますか?

第2に、上記の答えがいいえの場合、他のどのようなオプション(mayaviまたは別のpythonパッケージのいずれか)でこの大きさのデータセットをプロットする必要がありますか?

私はParaViewにタグを付けて、そのレンダリングを追加するだけで、ParaViewのデータは非常にスムーズになり、私が何か不合理なことをやろうとしているとは信じられません。

更新:2Dグリフなどのモードを指定するには、

高速化物事アップに向けた長い道のりを行きます。例えば。

mlab.points3d(x, y, z, s, colormap="RdYlBu", scale_factor=0.02, 
       scale_mode='none', mode='2dcross') 

は、誰でも簡単に3Dのグリフのレンダリングを高速化する方法についていくつかの情報を追加することができればそれはまだいいだろう、最大100,000ポイント

enter image description here

をサポートすることができます。

答えて

2

PyQtGraphは、matplotlibやmayaviのように "美しい"ものではありませんが、はるかに優れたプロットパッケージです。これはナンバー・クリニングのために作られているため、1万のオーダーのポイントを簡単にレンダリングする必要があります。

mayavimatplotlibについては、これらのパッケージで可能な点に達していると思います。

編集:VisPyは、PyQtGraphと他のいくつかの視覚化パッケージの後継者のようです。ちょっと残念なことかもしれませんが、計算をGPUにオフロードすることで簡単に数十万点を表示することができます。

+0

この質問を蘇らせていただきありがとうございます! VisPyは非常に強力な視覚化パッケージであるようですが、一見すると、APIはPythonパッケージで使用されていたよりも複雑で、特に動的な描画/レンダリングに適しています。とにかく、私はそれが次の日に私の目的に合っているかどうか、ありがとう! – lanery

関連する問題