在偏移轮廓图中(如下图所示):
我一直在尝试在偏移等值线图上添加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并得到横向&跨越这些范围的垂直轴。有关这种方法的任何想法吗?
答案 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)
诀窍是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`