2017-04-03 26 views
0

私は3Dプロットを含むこのコードを持っています。私はSpyderでコードを実行します。このプロットを360度回転させて保存することが可能かどうかを知りたい。 ありがとう! P.申し訳ありませんが、愚かな質問ですが、私はPythonでnewbyです。pythonで3Dプロットを回転するにはどうすればいいですか? (またはアニメーションとして)マウスを使用して3Dビューを回転させる

import matplotlib.pyplot as plt 
import numpy as np 
from scipy import array 
jet = plt.get_cmap('jet') 
from matplotlib import animation 
fig = plt.figure() 
ax = fig.gca(projection='3d') 

X = np.linspace(70,40,4) 
Y = np.linspace(5,2,4) 
X,Y= np.meshgrid(X, Y) 

Z = array ([ 
     [1223.539555, 1428.075086,1714.479425, 2144.053223], 
     [1567.26647,1829.056119,2990.416079,2745.320067], 
     [2135.163957,2491.534201, 2990.416079,3738.761638], 
     [3257.280827, 3800.655101, 4561.372117, 5702.458776], 
     ]) 

surf = ax.plot_surface(X, Y, Z, rstride = 1, cstride = 1, cmap = jet,linewidth = 0,alpha= 1) 
ax.set_zlim3d(0, Z.max()) 

fig.colorbar(surf, shrink=0.8, aspect=5) 
ax.set_xlabel('Axial Length [mm]') 
ax.set_ylabel('nbTurns') 
ax.set_zlabel('RPM') 

plt.show() 

答えて

2

特定のアニメーションを取得するには、関数を定義する必要があります。

def rotate(angle): 
    ax.view_init(azim=angle) 

が続いてmatplotlibのアニメーションを使用します:あなたのケースでは、単純な回転である

rot_animation = animation.FuncAnimation(fig, rotate, frames=np.arange(0,362,2),interval=100) 

この角度などと100msの間隔でframes引数で回転関数を呼び出しますので、これを360°以上のローテーションが発生し、ステップごとにそれぞれ100msとなります。アニメーションをGIFファイルとして保存するには:

rot_animation.save('path/rotation.gif', dpi=80, writer='imagemagick') 
+0

もう一度、最初にあなたの助けと答えに感謝したいと思います。私は私の初期コードを変更しましたが、私はまだ私が節約部分に問題があると思います。実行後、このエラーが発生します** renderer._renderer.write_rgba(filename_or_obj) RuntimeError:ファイルへの書き込みエラー** –

+0

これは一般的な問題です(例:http://stackoverflow.com/questions/25140952/matplotlibを参照)。 -save-animation-in-gif-error)を使用します。 'imagemagick'が正しくインストールされていることを確認してください。それ以外の場合は、上記のリンクに示すようにmp4形式で保存してみてください。 –

関連する問題