python - 如何创建传递自定义半径的地理热图

标签 python python-3.x matplotlib heatmap folium

我想使用 folium 在 map 上创建可视化。在 map 中,我想观察有多少项目与构建热图的特定地理点相关。下面是我正在使用的代码。

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

在这张 map 中,每个点都有相同的半径。 Insted,我想创建一个热图,其中点半径与其所属城市的半径成正比。我已经尝试在列表中传递半径,但它不起作用,也无法使用 for 循环传递值。

有什么想法吗?

最佳答案

需要一点一点的补充。所以你可以指定每个点的半径。像这样:

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')

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

Result

关于python - 如何创建传递自定义半径的地理热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53174753/

相关文章:

python - 在旧版本的 Python 中使用 `@unittest.skipIf`

python - __getattr__ 和 __getattribute__ 之间的区别

python - pandas wide_long vs (stack and melt) 用于数据帧转换

python with object 模拟多个with对象

python - Matplotlib 用新数据更新图形,图形不显示

python - 线宽与线的长度相加

python - select() 在 python 套接字中可以管理多少个文件描述符?

python - 将时间戳+数据从mysql导入到python并绘制时间序列

python - 了解序列解包 : Why does using a set throw "SyntaxError: can' t assign to literal"?

python - 如何制作围绕圆圆周移动的点的动画?