给个python griddata的示例
时间: 2023-06-12 19:07:13 浏览: 135
当你有一组二维数据点 (x,y) 和相应的值 z,你可能需要在网格上进行插值以获得平滑的二维函数。这种情况下,可以使用 Scipy 库中的 `griddata` 函数。
下面是一个简单的示例,演示如何使用 `griddata` 在网格上进行插值:
```python
import numpy as np
from scipy.interpolate import griddata
import matplotlib.pyplot as plt
# 创建一些测试数据
points = np.random.rand(20, 2)
values = np.sin(3 * points[:, 0]) * np.cos(2 * points[:, 1])
# 定义网格范围
grid_x, grid_y = np.mgrid[0:1:100j, 0:1:100j]
# 使用 griddata 进行插值
grid_z0 = griddata(points, values, (grid_x, grid_y), method='nearest')
grid_z1 = griddata(points, values, (grid_x, grid_y), method='linear')
grid_z2 = griddata(points, values, (grid_x, grid_y), method='cubic')
# 绘制图形
fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(8, 8))
axs[0, 0].scatter(points[:, 0], points[:, 1], c=values)
axs[0, 0].set_title('Scatter plot')
axs[0, 1].imshow(grid_z0.T, extent=(0, 1, 0, 1), origin='lower')
axs[0, 1].set_title('Nearest')
axs[1, 0].imshow(grid_z1.T, extent=(0, 1, 0, 1), origin='lower')
axs[1, 0].set_title('Linear')
axs[1, 1].imshow(grid_z2.T, extent=(0, 1, 0, 1), origin='lower')
axs[1, 1].set_title('Cubic')
plt.tight_layout()
plt.show()
```
这个示例会生成一个 2x2 的子图表格,每个子图都显示了插值方法的不同结果。
阅读全文