2013-01-02 104 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