首页 > 解决方案 > 如何将散点图转换为等高线图?

问题描述

我想将散点图转换为等高线图。我该如何处理我拥有的数据?这是代码:

import numpy as np
import matplotlib.pyplot as plt
x = np.array([-75.55846, -75.5459 , -75.56686, -75.55276, -75.57951, -75.58955,
   -75.59967, -75.53964, -75.65485, -75.55292, -75.59622, -75.57392,
   -75.47077, -75.58644, -75.68264, -75.56732, -75.59502, -75.37198,
   -75.59585, -75.57081, -75.40989, -75.50928, -75.54841, -75.72734,
   -75.36676, -75.79303, -75.36966, -75.69282, -75.42498, -75.57986,
   -75.58644, -75.64551, -75.45509, -75.47098])
y = np.array([38.07759, 38.07541, 38.06712, 38.09973, 38.06692, 38.09264,
   38.08731, 38.0822 , 38.36981, 38.06027, 38.07962, 38.08531,
   37.93448, 38.07716, 37.71758, 38.08925, 38.0975 , 38.33174,
   38.05731, 38.05515, 38.0547 , 38.1398 , 38.066  , 38.27009,
   37.93415, 38.24889, 38.19691, 38.03272, 38.19954, 37.91286,
   37.97847, 38.29755, 38.01239, 37.93453])
z = np.array([17.526, 21.336, 19.558, 17.78 , 20.828, 20.828, 20.066, 21.082,
   18.542, 20.32 , 19.812, 19.05 , 16.51 , 20.066, 25.654, 16.51 ,
   18.542, 17.018, 20.828, 21.844, 21.59 , 16.764, 20.828, 19.558,
   19.812, 22.606, 25.146, 19.558, 20.574, 24.13 , 35.306, 19.558,
   23.876, 18.796])
fig, ax = plt.subplots(figsize=(8,8))
ax.scatter(x, y, c=z)
plt.show()

散点图

标签: pythonmatplotlibcontour

解决方案


我想我想出了一个解决方案——见下文。基本上 x、y 和 z 是一维数组,而 X、Y 和 Z 是轮廓接受并且有效的二维数组。我会说我确实环顾四周来解决这个问题..所以这不是我一个人的。

def grid(x, y, z, resX=100, resY=100):
    #prepare to create grid
    xi = np.linspace(min(x), max(x), resX)
    yi = np.linspace(min(y), max(y), resY)

    #grid x, y, z
    X, Y = np.meshgrid(xi, yi)
    Z = griddata((x, y), z, (X, Y), method='linear')
    return X, Y, Z

推荐阅读