【问题标题】:Adding axis to offset contour plots将轴添加到偏移等高线图
【发布时间】:2013-10-21 20:53:21
【问题描述】:

在偏移等高线图中(如下图左侧):

我一直在尝试在偏移等高线图上的 X-Z 和 Y-Z 平面中添加水平轴和垂直轴(如右图所示)。请注意,水平和垂直轴一直延伸到 xlim、ylim 和 zlim 范围,并且不要停在主数据图的末尾。

你们中的许多人都会将此演示视为matplotlib3d contour3d_demo3。我现在的代码是完全相同的。

在 Y-Z 平面上绘制偏移二维等高线图的代码位是:

cset = ax.contour(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm)

在 2D 图中,我只会使用 axhline(0, color='black')。不幸的是,据我所知,axhline/axvline 没有像 ax.contour 这样的偏移选项。我可以得到我正在寻找的东西,比如将 Z 数据归零以获得水平线:

cset = ax.contour(X, Y, 0*Z, zdir='x', offset=-40, cmap=cm.coolwarm)

但问题是线停在数据的边缘。我希望能够任意设置我的 xlim、ylim 和 zlim 并获得跨越这些范围的水平和垂直轴。关于如何做到这一点的任何想法?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    很简单,自己画!改编示例中的代码,添加以下行:

    import numpy as np
    XL = np.linspace(X.min(),X.max(),100)
    YL = np.linspace(Y.min(),Y.max(),100)
    ZL = np.linspace(Z.min(),Z.max(),100)
    
    ax.plot(XL,0*XL,-100,zdir='z',color='k',lw=5)
    ax.plot(0*YL,YL,-100,zdir='z',color='k',lw=5)
    
    ax.plot(YL,0*YL,-40,zdir='x',color='k',lw=5)
    ax.plot(0*ZL,ZL,-40,zdir='x',color='k',lw=5)
    
    ax.plot(XL,0*XL,40,zdir='y',color='k',lw=5)
    ax.plot(0*ZL,ZL,40,zdir='y',color='k',lw=5)
    

    诀窍在于 3D 中的 ax.plot 有额外的参数:

    plot(self, xs, ys, *args, **kwargs) method of matplotlib.axes.Axes3DSubplot instance
        Plot 2D or 3D data.
    
        ==========  ================================================
        Argument    Description
        ==========  ================================================
        *xs*, *ys*  X, y coordinates of vertices
        *zs*        z value(s), either one for all points or one for each point.
        *zdir*      Which direction to use as z ('x', 'y' or 'z') when plotting a 2D set.
        ==========  ================================================
    
        Other arguments are passed on to
        :func:`~matplotlib.axes.Axes.plot`
    

    【讨论】:

    • 太棒了!我之前没有了解 ax.plot 中的 zs 值。我想我现在明白了。我让你的 X.min() 等值与我的 set_xlim() 等值匹配,现在它给出了我一直在寻找的东西,轴一直到边缘。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2014-10-03
    • 1970-01-01
    相关资源
    最近更新 更多