我正在使用matplotlib.pyplot
和numpy
绘制一组3D点。使用鼠标旋转图像会在图形窗口的底部产生方位角和仰角。
如何以编程方式获取这些值,以便在以后的计算中使用它们,例如,当释放鼠标或单击屏幕上的按钮时。
我正在使用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()
最佳答案
以下是一些代码,该代码使用回调打印出当前的方位角和仰角,并将它们附加到列表中以备后用。这些详细信息分别保存在ax3d.azim
和ax3d.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()
关于python - 如何从Matplotlib图形获取方位角和高程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23424282/