Auf*_*ind 3 python plot matplotlib heatmap
给出三个列表中的一些数据,例如:
latitudes = [50.877979278564,48.550216674805,47.606079101562,50.772491455078,42.451354980469,43.074657440186,44.044174194336,44.563243865967,52.523406982422,50.772491455078]
longitudes = [4.700091838837, 9.038957595825, -122.333000183105, 7.190686225891, -76.476554870605, -89.403335571289, -123.070274353027, -123.281730651855, 13.411399841309, 7.190686225891]
counts = [15, 845, 2, 50, 95, 49, 67, 32, 1, 88]
Run Code Online (Sandbox Code Playgroud)
可以解释为:坐标i是(latitudes[i],longitudes[i])counts[i]在地图上发生的次数.
我想生成一个具有适当比例的热图.坐标应由颜色填充的圆圈表示.圆的直径应以某种方式表示相应坐标的计数.
(作为替代方案,我考虑用颜色强度来表示计数.我不知道哪个是最好的,或者这两个represantation是否可以组合.)
怎么才能实现这样的热图?(我假设它被称为?)
或许提及我正在处理的数据量是相关的:
sum(counts) 约为1.000.000scatter是您正在寻找的方法,它有两个可选参数来调整每个点的大小(使用关键字size或只是s)或颜色(使用关键字color或c),或者您可以同时执行这两个操作.颜色或热图效果可能更适合您拥有的点密度.
以下是使用此方法的示例:
import matplotlib.pyplot as plt
import numpy as np
NPOINTS = 1000
np.random.seed(101)
lat = np.random.random(NPOINTS)*8+44
lon = np.random.random(NPOINTS)*100-50
counts = np.random.randint(0,1000,NPOINTS)
plt.subplot(211)
plt.scatter(lat, lon, c=counts)
plt.colorbar()
plt.subplot(212)
plt.scatter(lat, lon, s=counts)
plt.savefig('scatter_example.png')
plt.show()
Run Code Online (Sandbox Code Playgroud)
导致:

如果您选择使用size,您可能需要调整计数值以获得不太拥挤的绘图,例如通过扩展上面的示例:
plt.figure()
COUNT_TO_SIZE = 1./10
plt.scatter(lat, lon, s=counts*COUNT_TO_SIZE)
plt.savefig('scatter_example2.png')
Run Code Online (Sandbox Code Playgroud)
你得到一个更清洁的情节:

我当然不小心从正常的轴上交换了纬度和经度,但你明白了:)