【问题标题】:How to get azimuth and elevation from a matplotlib figure如何从 matplotlib 图中获取方位角和仰角
【发布时间】:2014-06-18 21:50:46
【问题描述】:

我正在使用 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()

【问题讨论】:

    标签: python numpy matplotlib python-2.x


    【解决方案1】:

    下面是一些代码,它使用回调打印出当前的方位角和仰角,并将它们附加到列表中以供以后进一步使用。这些详细信息分别保存在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()
    

    【讨论】:

    • 您缺少一些大括号:projections.append((azim, elev))。更改后,代码运行良好。
    • 没问题 :) 如果你觉得我的回答对你有帮助,你可以Accept my Answer
    猜你喜欢
    • 2020-01-17
    • 1970-01-01
    • 2011-07-14
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    相关资源
    最近更新 更多