ax.set_xlim3d在带有ax.plot_wireframe的Matplotlib中没有效果

时间:2014-01-20 17:38:12

标签: python matplotlib

我的数据限制了python中线框图的边界条件的概念性问题。谁能向我解释我哪里出错了?

我希望边界约束在-1.0之间。 x&lt; 1.2,0&lt; y&lt; 0.25和-0.6 < z&lt; 0.2

    fig = plt.figure()

    ax = plt.subplot(111, projection='3d')

    def log_OIII_Hb_NII(log_NII_Ha, eps=0):
        return 1.19 + eps + 0.61 / (log_NII_Ha - eps - 0.47)
    def log_OIII_Hb_OI(log_OI_Ha, eps=0):
        return 1.33 + eps + 0.73 / (log_OI_Ha - eps + 0.59)
    def log_OIII_Hb_SII(log_SII_Ha, eps=0):
        return 1.30 + eps + 0.72 / (log_SII_Ha - eps - 0.32)

    NII = np.linspace(-2.0, 0.35)

    ax.set_xlim3d(-1.0, 1.2)
    ax.set_ylim3d( 0.0, 0.25)
    ax.set_zlim3d(-0.6, 0.2)

    ax.plot_wireframe(NII, 0, log_OIII_Hb_NII(NII))
    ax.plot_wireframe(NII, 0, log_OIII_Hb_NII(NII,  0.1))
    ax.plot_wireframe(NII, 0, log_OIII_Hb_NII(NII, -0.1))

    ax.plot_wireframe(NII, 0.1, log_OIII_Hb_NII(NII))
    ax.plot_wireframe(NII, 0.1, log_OIII_Hb_NII(NII,  0.1))
    ax.plot_wireframe(NII, 0.1, log_OIII_Hb_NII(NII, -0.1))

    ax.plot_wireframe(NII, 0.2, log_OIII_Hb_NII(NII))
    ax.plot_wireframe(NII, 0.2, log_OIII_Hb_NII(NII,  0.1))
    ax.plot_wireframe(NII, 0.2, log_OIII_Hb_NII(NII, -0.1))

    plt.show()

1 个答案:

答案 0 :(得分:0)

如果我将您的问题解释正确,我认为您发现使用ax.set_xlim3d仅限制轴而不是实际数据本身。这与matplotlibs 正常 2D图表的情况相反,其中设置限制也限制了显示的实际数据。

以下是一个例子:

enter image description here

在左侧,我使用ax1.set_xlim3d(0.0, 10.0)限制数据,这限制了轴而不是实际数据。在右边,我限制了实际数据本身。

如果这是您的问题,那么您如何修复它将取决于NII, log_OIII_Hb_NII(NII),...究竟是什么(如果您将来可以提供一些人们可以使用的测试数据)以及如何生成它。

This post似乎包含相关方法。