将轴添加到偏移等高线图

时间:2013-10-21 20:53:21

标签: python matplotlib

在偏移轮廓图中(如下图所示):

Example of offset contour plot

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

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

在Y-Z平面上绘制偏移2D等值线图的代码位是:

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并得到横向&跨越这些范围的垂直轴。有关这种方法的任何想法吗?

1 个答案:

答案 0 :(得分: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)

enter image description here

诀窍是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`