2016-05-16 14 views
-1

私はPythonで2次元numpy配列を視覚化する必要があります。等高線プロットではなく、サーフェスプロットではありません。 3D配列内のすべての(x、y)要素に対してz軸上の点をプロットします。私のデータは1024×1024の配列ですが、もし私がそうしなければ私はそれをデシメートすることができます。私はマウスのドラッグでプロットを回転させて、異なる視点から見ることができる必要があります。Pythonの2d numpy配列の "高速"対話プロット

Matplotlibは、100×100アレイの場合でも、これを行うことはできません。それははるかに遅すぎる。 100×100の配列は、ドラッグ後に再描画するのに2〜3秒かかります。 1024 x 1024の問題はありません。

mayabiからのmlabにはこの機能があるようですが、wxエラーのあるシステムでは最も簡単な試行がクラッシュします。私が知る限り、対話型の高速回転(VTKなど)を提供するパッケージは、複雑な3次元形状の描画に焦点を当てており、データをプロットするための単純なAPIは提供していません。

オプションを提案できますか?

私の現在の設定:
OS X 10.11.4
のpython 1.7.11
numpyの1.11.0
matplotlibの1.5.1
mayavi 4.4.0
WX 3.0.0.0

+0

コメントなしの投票はあまり役に立ちません。 – garyp

+0

あなたはあなたが望んでいないものを述べていますが、あなたが実際にしたいものは述べていません。 –

+0

@ Han-KwangNienhuys私の最初の段落は明らかではないと思います。私は2次元配列を持っています.3次元で可視化したい、z軸は各点の配列の値を表します。私はマウスのドラッグを使用して回転できるようにしたい。 – garyp

答えて

0

この20×20デシメーションのxyzプロットです。私のラップトップが快適に行う最高のものです。これ以上のポイントはあまり意味がありません。なぜなら、個々のポイントをもはや区別することができないからです。

from mpl_toolkits.mplot3d.axes3d import Axes3D 
import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure() 
X = np.linspace(-3,3,1024) 
Y = np.linspace(-3,3,1024) 
X, Y = np.meshgrid(X, Y) 
Z = np.exp(-(X**2+Y**2)) 
ax = fig.add_subplot(1, 1, 1, projection='3d') 
ax.plot_wireframe(X, Y, Z, rstride=20, cstride=20) 

plt.show(block=False) 
raw_input('Press ENTER') 

Gnuplotを使用してプロットすることができます。これは、matplotlibよりもはるかに高速なインタラクティブな回転を処理します。例:

set isosamp 50 
set xrange [-3:3] 
set yrange [-3:3] 
splot exp(-x**2-y**2) 

あなたのpythonから直接それを使用できるようにする必要がありPythonモジュールGnuplot.pyがあります。

関連する問題