2016-04-12 69 views
0

我已經張貼關於這裏的另一個問題類似於下面的一個例子:基於相鄰軸3D matplotlib表面圖形顯示輪廓值

Displaying Contours in front of Surface in matplotlib

我張貼再次針對不同的問題:

from mpl_toolkits.mplot3d import axes3d 
import matplotlib.pyplot as plt 
from matplotlib import cm 
from mpl_toolkits.mplot3d import Axes3D 
import numpy as np 

fig = plt.figure() 
ax = fig.gca(projection='3d') 
X = np.array([[200,800,1500,2000,3000],[200,700,1500,2000,3000],[200,800,1500,2000,3000],[200,800,1500,2000,3000]]) 
Y = np.array([[50,50,50,50,50],[350,350,350,350,350],[500,500,500,500,500],[1000,1000,1000,1000,1000]]) 
Z = np.array([[0,0,33,64,71],[44,62,69,74,76],[59,67,72,75,77],[63,68,73,76,77]]) 

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, alpha=0.5) 

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

levels = [500,700,1000,2000,3000] 
ax.set_xticks(levels) 

ax.set_xlabel('X') 
ax.set_xlim(200, 3000) 
ax.set_ylabel('Y') 
ax.set_ylim(0, 1000) 
ax.set_zlabel('Z') 
ax.set_zlim(0, 100) 

plt.show() 

是否有可能有我的等值線繪製等於相鄰軸值一些輪廓:

例如3D_Surface_from_code_above用於我的Y-Z平面中圖片左側的輪廓。而不是有7輪廓顯示(我不知道它們對應的X值是什麼),每個X刻度值可能會有一個輪廓?即500,700,1000,2000,3000。

我希望有道理,它可以讓觀衆跟隨對應於X = 700的輪廓,看看Z對於這個固定的X值是如何變化的這將使我能夠爲我特別感興趣的X值設定輪廓。

謝謝你的幫助。

+1

可以直接設置水平輪廓函數的自變量爲'CSET = ax.contour(X,Y,Z ,水平,zdir ='x',偏移= 200,cmap = cm.coolwarm)' –

+0

@NoelSegura我認爲你應該發佈這個答案,以便問題可以被標記爲已回答。 – Dusch

+0

謝謝諾埃爾,工作正常! – Sorade

回答

0

可以直接設置水平輪廓函數的自變量作爲

levels = [500,700,1000,2000,3000] 
cset = ax.contour(X, Y, Z, levels, zdir='x', offset=200, cmap=cm.coolwarm)