python - Matplotlib 插值/绘制非结构化数据

标签 python matplotlib

通常,我处理的图像数据是 m x n 形状的数组。显示很容易,对吗?

import numpy as np
import matplotlib.pyplot as plt

#sample data
m,n = 10,20
sample = np.random.random((m,n))
plt.imshow(sample)

通过不同的算法,我现在获取的数据具有 x,y,数据的形状与 m,n 不同,但范围相同。让我生成一些示例来更好地解释。

k = 300
x = np.random.random((k,)) * m
y = np.random.random((k,)) * n
data = np.random.random((k,))

我想做两件事,但我不明白。

1)以 imshow 样式绘制数据

2) 为了更好的可比性,将数据插值到矩形 m,n 网格上,即使用数据值(如“最近的”)生成形状为 m,n 的数组。

我实际上使用 scipy.ndimage.map_coordinates 来做这件事,但无法让它反向工作......

干杯

最佳答案

下面是 scipy.interpolate.griddata 的示例,稍作修改用法:

import numpy as np
from scipy.interpolate import griddata
import matplotlib.pyplot as plt

k = 300
m, n = 10, 20

x = np.random.random((k,)) * m
y = np.random.random((k,)) * n
data = np.random.random((k,))

grid_x, grid_y = np.mgrid[0:m+1, 0:n+1]

grid_z0 = griddata((x, y), data, (grid_x, grid_y), method='nearest')
grid_z1 = griddata((x, y), data, (grid_x, grid_y), method='linear')
grid_z2 = griddata((x, y), data, (grid_x, grid_y), method='cubic')

plt.subplot(131)
plt.imshow(grid_z0.T)
plt.title('Nearest')

plt.subplot(132)
plt.imshow(grid_z1.T)
plt.title('Linear')

plt.subplot(133)
plt.imshow(grid_z2.T)
plt.title('Cubic')

plt.gcf().set_size_inches(6, 6)
plt.show()

关于python - Matplotlib 插值/绘制非结构化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40014554/

相关文章:

python - 打印字符串 "like"交互式解释器?

python - 我的程序有错误,无法找出它不起作用的原因

python - 使用 Python 3.7 导入 pyobjc AppKit 时如何消除不需要的调试输出

python - matplotlib中轴标签文本顶部的位置是什么?

python - Python 中的 Gamma 函数图

python - 使用 matplotlib 在 x 轴上绘制时间

python - Pandas GroupBy 对象到数据框,将数据存储在逗号分隔的文件中

python - 使用Pandas读取文件夹位置Python中的所有csv文件

python - matplotlib FuncAnimation : when to stop?

python - 如何为每个类(class)和小组生成单独的 fiddle 图