2013-01-22 39 views
1

我目前能夠從一些數據繪製pcolor樣式圖。數據由每個數據點(X,Y,Z)的三個座標組成。Python - 有一個pcolor圖;現在想要一個表面

我的數據結構化方式如下:

X: 1D array 
    shape = [500,0] 

Y: 1D array 
    shape = [700,0] 

Z: 2D array 
    shape = [500, 700] 

所以我的小Z陣列的行對應的X座標,我的列對應於Y座標。

然後上繪製令pColor圖中的數據,我壓根兒:因爲pcolormesh期望如何接收輸入數據需要

plt.pcolormesh(X,Y,Z.T) 

移調。

現在我想繪製與使用plot_surface的表面相同的數據。然而,我有一些問題需要通過必要的方式來構建我的數據。任何人都可以提供指導嗎?

回答

1

plot_surface預計所有輸入數組爲2D。

您可以使用numpy.meshgrid生成網格點

In [78]: X = np.arange(500)     
In [79]: Y = np.arange(700) 

In [83]: xx, yy = np.meshgrid(X, Y) 

In [84]: xx.shape 
Out[84]: (700, 500) 

In [85]: yy.shape 
Out[85]: (700, 500) 

然後可以調用plot_surface(xx, yy, Z.T)

+0

你甚至可以通過使用MGRID獲得較少的線路:'YY,XX = np.mgrid [0 :700,0:500]'。 – tiago

+0

@tiago不錯,我只知道'meshgrid'(已經從舊的MATLAB時代開始) –

相關問題