我用这个方法制作大网格->
min_value = -0.04
max_value = 0.04
step_size = 0.0001
xvalues = np.arange(min_value, max_value + step_size, step_size)
yvalues = np.arange(min_value, max_value + step_size, step_size)
xx, yy = np.meshgrid(xvalues, yvalues)
summed_temp = np.zeros_like(xx)
grid_coordinates = np.column_stack((xx.ravel(), yy.ravel()))
我有零的坐标和值
下一步:我有特定位置 (x1,y1) target_location 和二维数组作为临时网格 target_temp_grid = ishape_temp_grid[0][:, :, 0]
第三步:我在我之前制作的大网格中找到了目标位置的最近邻居,现在我有了新的目标位置nearest_center_point = grid_coordinates[nearest_index]
第四步:我让坐标被nearest_center_point包围 使用translate_grid函数
第五步:我通过旋转翻译后的坐标来获得新坐标
第六步:我想将我的 2d 临时网格(代表温度的 ishape_temp_grid[0][:, :, 0] 值)插值到我之前制作的当前填充零的更大网格中,并将零代表的值更改为温度
第七步:绘制大网格并显示点和温度 我卡在第六步了 我不知道从六步和七步开始该怎么做。
我尝试了什么
interpolated_temp = griddata(combined_rotated_coordinates, target_temp_grid.ravel(), (xx, yy), method='linear', fill_value=0)
错误:文件“interpnd.pyx”,第 193 行,在 scipy.interpolate.interpnd._check_init_shape 中 ValueError:不同数量的值和点 或者 其他导致奇怪形状的方式
您可以将
contourf()
与 colorbar()
一起使用:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
def _interpolate(G, RC):
min_value = -0.04
max_value = 0.04
step_size = 0.0001
xvalues = np.arange(min_value, max_value + step_size, step_size)
yvalues = np.arange(min_value, max_value + step_size, step_size)
xx, yy = np.meshgrid(xvalues, yvalues)
summed_temp = np.zeros_like(xx)
coords, temp = np.array(RC), G.ravel()
summed_temp += griddata(coords, temp, (xx, yy), method='linear', fill_value=0)
plt.figure(figsize=(10, 8))
plt.contourf(xx, yy, summed_temp, levels=100, cmap='hot')
plt.colorbar(label='Temp')
plt.scatter(coords[:, 0], coords[:, 1], c='blue', s=10, label='label')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.show()
G = np.array([[15, 20, 25],
[30, 35, 40],
[45, 50, 55]])
RC = np.array([[-0.01, -0.01],
[0.00, -0.01],
[0.01, -0.01],
[-0.01, 0.00],
[0.00, 0.00],
[0.01, 0.00],
[-0.01, 0.01],
[0.00, 0.01],
[0.01, 0.01]])
_interpolate(G, RC)