如何创建一个地理热力图并传递自定义半径

3
我想使用folium在地图上创建可视化效果。在地图上,我想观察有多少项目与特定的地理点相关,并构建热力图。以下是我正在使用的代码。
import pandas as pd
import folium
from folium import plugins

data = [[41.895278,12.482222,2873494.0,20.243001,20414,7.104243],
        [41.883850,12.333330,3916.0,0.835251,4,1.021450],
        [41.854241,12.567000,22263.0,1.132390,35,1.572115],
        [41.902147,12.590388,19505.0,0.839181,37,1.896950],
        [41.994240,12.48520,16239.0,1.383981,25,1.539504]]

df = pd.DataFrame(columns=['latitude','longitude','population','radius','count','normalized'],data=data)

middle_lat = df['latitude'].median()
middle_lon = df['longitude'].median()
m = folium.Map(location=[middle_lat, middle_lon],tiles = "Stamen Terrain",zoom_start=11)

# convert to (n, 2) nd-array format for heatmap
points = df[['latitude', 'longitude', 'normalized']].dropna().values

# plot heatmap
plugins.HeatMap(points, radius=15).add_to(m)
m.save(outfile='map.html')

这里是结果

heatmap

在这张地图中,每个点的半径都是相同的。相反,我想创建一个热力图,在这个图中,每个点的半径与其所属城市的半径成比例。我已经尝试将半径传递到列表中,但是它不起作用,使用for循环传递值也是一样。有什么想法吗?
1个回答

6

您需要逐一添加每个点,并为每个点指定半径。例如:

import random
import numpy

pointArrays = numpy.split(points, len(points))
radii = [5, 10, 15, 20, 25]

for point, radius in zip(pointArrays, radii):
    plugins.HeatMap(point, radius=radius).add_to(m)

m.save(outfile='map.html')

在这里,您可以看到每个点都有不同的大小。

结果


这对我来说几乎起作用了。 我的问题是,len(points) = 231 因此,此代码仅为前5行设置半径。 有什么想法可以扩展半径列表以匹配numpy数组吗? - user7313804

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接