2013-10-21 55 views
1

在偏移等高线图(如左侧下方的图像中):添加轴以抵消等高线图

Example of offset contour plot

我一直试图在XZ和YZ平面添加水平和垂直轴在偏移轮廓图上(如右图)。请注意,水平垂直轴将一直延伸到xlim,ylim & zlim范围,并且不会停在主数据图的末尾。

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

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

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

在2D图我只想用axhline(0, color='black')。不幸的是axhline/axvline没有偏移选项,就像斧头一样起作用。我可以种得到什么我正在寻找玩把戏一样归零在Z数据得到一个水平线:

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

但问题是该行停止在数据的边缘。我希望能够任意设置我的xlim,ylim & zlim并获得横跨这些范围的水平轴&。任何想法的方式来做到这一点?

回答

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

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

真棒!我之前没有拿起ax.plot中的zs值。我想我现在明白了。我让你的X.min()等值与我的set_xlim()等值相匹配,它现在给出了我一直在寻找的轴,一直到边缘。谢谢! – c1one