2013-10-21 101 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