【问题标题】:how to draw axes passing through the origin in a 3D plot using matplotlib如何使用matplotlib在3D图中绘制穿过原点的轴
【发布时间】:2018-05-20 11:14:43
【问题描述】:

我想创建一个如下所示的 3d 图,这样轴通过原点并带有刻度。

PS:我可以使用 matplotlib(下图)为 2D 绘图做到这一点。我搜索了很多内容来为 3D 绘图做同样的事情,但我没有找到任何信息。

【问题讨论】:

    标签: matplotlib


    【解决方案1】:

    如果您想将自己限制在matplotlib,那么我们可以使用quiver3d 绘图,如下所示。但结果可能在视觉上不是很吸引人。可以看here如何添加3D文字标注。

    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    import numpy as np
    
    fig = plt.figure()
    ax = fig.add_subplot(111,projection='3d')
    ax.set_xlim(0,2)
    ax.set_ylim(0,2)
    ax.set_zlim(0,2)
    ax.view_init(elev=20., azim=32)
    
    # Make a 3D quiver plot
    x, y, z = np.zeros((3,3))
    u, v, w = np.array([[1,1,0],[1,0,1],[0,1,1]])
    
    ax.quiver(x,y,z,u,v,w,arrow_length_ratio=0.1)
    plt.show()
    

    【讨论】:

    • 谢谢阿米特。但问题是这里的 x、y、z 轴不通过原点,除非轴 (xlim, ylim, zlim) 的下限为零。
    • 如果我将轴绘制为箭头(使用 quiver),我怎样才能在它们上面加上刻度?
    • 没有自动的方法可以做到这一点。我想您将不得不在循环中添加刻度和标签作为文本注释。但这不是最简单的解决方案。
    • 另一个想法是使用 2d 绘图命令进行绘制,但要使图形“显示”为 3d。但这又不是一个自动的解决方案。我们必须计算角度和长度。
    猜你喜欢
    • 2015-08-14
    • 1970-01-01
    • 2022-11-26
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多