如何在Python中插入更大的网格

问题描述 投票:0回答:1

我用这个方法制作大网格->

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:不同数量的值和点 或者 其他导致奇怪形状的方式

python numpy matplotlib rotation interpolation
1个回答
0
投票

您可以将

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)

© www.soinside.com 2019 - 2024. All rights reserved.