使用Matplotlib的Hexbin创建Heatmap

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

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

iyfjxgzm

iyfjxgzm1#

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

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. plt.close("all")
  4. N = 158 # OP said 25k datapoints; sqrt(25000) ~ 158
  5. latitude = np.random.standard_normal(N**2)
  6. longitude = 12 * np.random.standard_normal(N**2)
  7. var = 100
  8. SQFT = 1_000*np.exp(-(latitude**2 + longitude**2)/2/var)/2/np.pi/var + 1
  9. fig, ax = plt.subplots()
  10. p = ax.hexbin(longitude, latitude, C=SQFT, gridsize=50, reduce_C_function=sum)
  11. fig.colorbar(p, ax=ax, label="SQFT")
  12. ax.set_xlabel("Longitude")
  13. ax.set_ylabel("Latitude")
  14. fig.show()

展开查看全部

相关问题