如何从matplotlib图中获取方位角和仰角

2 投票
1 回答
5818 浏览
提问于 2025-04-18 05:06

我正在使用 matplotlib.pyplotnumpy 来绘制一组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()

1 个回答

3

下面是一段代码,它使用回调函数来打印当前的方位角和仰角,并将这些信息添加到一个列表中,以便后续使用。这些细节分别保存在 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()

撰写回答