2013-01-02 31 views
7

我想把一些數據放入一個imshow()圖。 我的問題是,數據不是作爲一個MxN數組,而是作爲一個3xN數組(x和y座標和值)。這些點不是按常規格子排列,而是位於[xmin,xmax,ymin和ymax] = [ - pi/2,pi/2,0,3.5]內。matplotlib imshow()與不規則空間數據點

In [117]: shape(data) 
Out[117]: (3L, 102906L) 

如何從該數據中獲得好的圖像圖? 非常感謝您的幫助。

btw數據表示作爲軸向和方位位置的函數的杆表面上的溫度值,考慮cfd-網格。

+1

HM最終interp2d打算做的工作......讓我們看看 – user1805743

+1

如果你解決了你的問題,你可以請回答自己的問題,接受的答案? – tacaswell

回答

12

我推薦使用griddata方法進行插值。樣本是:

import numpy as np 
from matplotlib.mlab import griddata 
import matplotlib.pyplot as plt 

xs0 = np.random.random((1000)) * np.pi - np.pi/2 
ys0 = np.random.random((1000)) * 3.5 
zs0 = np.random.random((1000)) 

N = 30j 
extent = (-np.pi/2,np.pi/2,0,3.5) 

xs,ys = np.mgrid[extent[0]:extent[1]:N, extent[2]:extent[3]:N] 

resampled = griddata(xs0, ys0, zs0, xs, ys) 

plt.imshow(resampled.T, extent=extent) 
plt.plot(xs0, ys0, "r.") 
plt.plot(xs, ys, "b.") 
plt.title("imshow for irregularly spaced data using griddata") 
plt.show() 

我想從你的3 * X-陣列過渡到三個X陣列是顯而易見的。

結果是:

Sample

紅點顯示的數據,對現在間隔規則的數據的「原始」的位置,藍點。

griddata返回一個被屏蔽的數組。無法評估插值的所有點都被屏蔽,然後繪製爲白色區域。

HTH, 托爾斯滕

+0

我剛剛發佈此鏈接,因爲它幫助我,但你更快:) http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data – user1805743