我试图将一些数据放入imshow()图中。 我的问题是数据不是作为MxN数组而是作为3xN数组(x和y坐标和值)。这些点不是按照规则网格排列,而是在[xmin,xmax,ymin和ymax] = [ - pi / 2,pi / 2,0,3.5]之内。
In [117]: shape(data)
Out[117]: (3L, 102906L)
如何从该数据中获得漂亮的图像图? 非常感谢您的帮助。
btw数据表示杆的表面上的温度值是轴向和方位角位置的函数,可以想象为cfd-mesh。
答案 0 :(得分:12)
我建议使用griddata-method进行插值。样本将是:
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阵列是显而易见的。
结果是:
红点显示"原始"数据的位置,现在有规律间隔的数据的蓝点。
griddata返回一个蒙面数组。无法评估插值的所有点都被屏蔽,然后绘制为白色区域。
HTH, 的Thorsten