matplotlib imshow()具有不规则间隔的数据点

use*_*743 7 plot image matplotlib dataformat

我试图将一些数据放入imshow()图中.我的问题是数据不是作为MxN数组而是作为3xN数组(x和y坐标和值).这些点不是作为规则网格排列,而是位于[xmin,xmax,ymin和ymax] = [ - pi/2,pi/2,0,3.5]之内.

In [117]: shape(data)
Out[117]: (3L, 102906L)
Run Code Online (Sandbox Code Playgroud)

如何从该数据中获得漂亮的图像图?非常感谢您的帮助.

顺便说一下,数据表示杆的表面上的温度值是轴向和方位角位置的函数,可以想象为cfd-mesh.

Tho*_*anz 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()
Run Code Online (Sandbox Code Playgroud)

我想从你的3*X阵列转换到三个X阵列是显而易见的.

结果是:

样品

红点显示数据的"原始"位置,现在是有规律间隔的数据的蓝点.

griddata返回一个蒙版数组.无法评估插值的所有点都被掩盖,然后绘制为白色区域.

HTH,Thorsten

  • 如果其他人在 2022 年仍然尝试使用它:griddata 不再是 matplotlib.mlab 的一部分。调用 `resampled = scipy.interpolate.griddata((xs0, ys0), zs0, (xs, ys))` (3认同)