在偏移等值线图中(如下图左侧):
我一直在尝试在偏移等值线图上的 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)
诀窍是 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/