使用Matplotlib的Hexbin创建Heatmap

pw9qyyiw  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(119)

我不是一个程序员,但我最近一直在使用Python做一些数据分析,最近偶然发现了Matplotlib。我有一系列的地理坐标数据点,我试图可视化。数据由地理坐标和每个位置的平方英尺组成:
纬度,经度,SQFT
我有大约25 k的这些数据点,我想显示这些累积平方英尺的二维图像;基本上创建了一个平方英尺的热图。我已经设法使用Matplotlib创建了一个带有纬度和经度数据的十六进制数据库,但这只能给我一个项目福尔斯数据库的次数。我不知道我是如何将平方英尺纳入垃圾箱。我看了matplotlib文档,发现我可以输入一个额外的变量,他们称之为C,但我不知道我需要如何格式化数据(或者这是否会做我需要它做的事情)。

iyfjxgzm

iyfjxgzm1#

正如@Brian L的评论中所述,要获得每个单元格中的累积平方英尺值,您需要将reduce_C_function更改为sum。这意味着Matplotlib将使用Python sum函数(默认值是均值函数)来确定该bin的颜色,基于C(在本例中为SQFT)。下面是一个使用随机生成数据的示例。

import numpy as np
import matplotlib.pyplot as plt

plt.close("all")

N = 158                             # OP said 25k datapoints; sqrt(25000) ~ 158
latitude = np.random.standard_normal(N**2) 
longitude = 12 * np.random.standard_normal(N**2) 

var = 100
SQFT = 1_000*np.exp(-(latitude**2 + longitude**2)/2/var)/2/np.pi/var + 1

fig, ax = plt.subplots()
p = ax.hexbin(longitude, latitude, C=SQFT, gridsize=50, reduce_C_function=sum)
fig.colorbar(p, ax=ax, label="SQFT")
ax.set_xlabel("Longitude")
ax.set_ylabel("Latitude")
fig.show()

相关问题