1

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

偏移等值线图示例

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

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

在 YZ 平面上绘制偏移二维等高线图的代码是:

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

在二维图中,我只会使用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 并获得跨越这些范围的水平和垂直轴。关于如何做到这一点的任何想法?

4

1 回答 1

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)

在此处输入图像描述

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

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`
于 2013-10-21T21:06:31.067 回答