2014-05-02 53 views
2

我正在繪製一組使用matplotlib.pyplotnumpy的3D點。使用鼠標旋轉圖像會在圖形窗口底部產生方位角和仰角。如何從matplotlib圖獲得方位角和仰角

如何以編程方式獲取這些值,以便我可以在隨後的計算中使用它們,例如,當鼠標被釋放或我單擊屏幕上的按鈕時。

我正在使用python 2.7.5。我的代碼應該說明問題。

import numpy as np 

import matplotlib.pyplot as plt 

from mpl_toolkits.mplot3d import Axes3D 

mol=np.random.rand(6,3)*10.0 

fig3d = plt.figure(figsize = (6.5, 6.5)) 

fig3d.canvas.set_window_title('3D') 

ax3d = fig3d.gca( projection='3d') 

ax3d.scatter(mol[:,0], mol[:,1], mol[:,2], s=200) 

plt.show() 

回答

2

下面是使用一個回調來打印出當前方位和仰角,以及它們添加到供以後再次使用清單一些代碼。這些細節分別保存在ax3d.azimax3d.elev中。

每次釋放鼠標按鈕時,它都會調用on_click。這將允許您簡單地將圖形旋轉到您選擇的旋轉角度,然後保存投影。

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

mol=np.random.rand(6,3)*10.0 

fig3d = plt.figure(figsize = (6.5, 6.5)) 

fig3d.canvas.set_window_title('3D') 

ax3d = fig3d.gca(projection='3d') 
ax3d.scatter(mol[:,0], mol[:,1], mol[:,2], s=200) 

# List to save your projections to 
projections = [] 

# This is called everytime you release the mouse button 
def on_click(event): 
    azim, elev = ax3d.azim, ax3d.elev 
    projections.append((azim, elev)) 
    print(azim, elev) 

cid = fig3d.canvas.mpl_connect('button_release_event', on_click) 

plt.show() 
+0

你錯過了一些大括號:'projection.append((azim,elev))'。改變之後,代碼運行良好。 –

+0

@Bas謝謝你:) – Ffisegydd

+0

Ffisegydd&Bas非常感謝你的迅速回應。 – user3563503

相關問題