python - 如何将散点图转换为等高线图?
问题描述
我想将散点图转换为等高线图。我该如何处理我拥有的数据?这是代码:
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()
解决方案
我想我想出了一个解决方案——见下文。基本上 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
推荐阅读
- micronaut - Micronaut 无法构建原生镜像 Graalvm
- android - 为产品构建 https://github.com/minvws/nl-covid19-coronacheck-app-android
- css - 将子元素发送到前面
- node.js - 类型错误:无法读取未定义的属性“盐”| 节点JS
- c++ - 如何在 C++ 中创建带有输入的单链表
- redux - redux-observable 2.0.0 - 用 pipeable 运算符替换 action$.ofType()
- c++ - C++ - 单线迭代嵌套大括号括起来的列表?
- javascript - 当 url 匹配相同的路由时,vue3 router.push 不更新组件?
- python - AttributeError:“int”对象没有熊猫的“split”属性
- python - Python - 正态分数