python - 添加轴以偏移等值线图

标签 python matplotlib

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

Example of offset contour plot

我一直在尝试在偏移等值线图上的 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 并获得跨越这些范围的水平和垂直轴。有什么办法可以做到这一点吗?

最佳答案

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

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`

关于python - 添加轴以偏移等值线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19504483/

相关文章:

python - pandas/matplotlib 具有多个 y 轴的图

python - Jupyter/Geopandas 绘图顺序打破了 figsize

python - 在不绘制先前点的情况下循环绘制 map

python - 将数组转换为 MultiLabelBinarizer 的列表

python - 在另一条线的一点上绘制固定长度的垂直线

Python:使用生物萨伐尔定律计算电线的磁场

python - 使用 matshow 时 matplotlib 中的自定义颜色

python - 使用 urllib.urlopen() 无法获得网页的源代码

python - 如何使用 sed 命令注释掉 python 代码

python - 如何删除 matplotlib_venn 中的数据标签?