python-地图可视化组件folium

python-地图可视化组件foliumfolium 是 python 的一个用来绘制地图 并在地图上打点 画圈 做颜色标记的工具类 简单易学 和 pandas 可以很好的融合 是居家必备良品 一基本功能演示 importfolium folium Map location 40 009867 116 zoom start 10 绘制地图 确定聚焦点 folium Mar

import folium import webbrowser m=folium.Map(location=[40.009867,116.],zoom_start=10) # 绘制地图,确定聚焦点 folium.Marker([40.2,116.7],popup='浮标上面的那个文字').add_to(m) # 定一个点,放到地图m上 folium.Marker([40.22,116.72],popup='浮标上面的那个文字',icon=folium.Icon(color='red')).add_to(m) # 把浮标变成红色 folium.Marker([40.24,116.74],popup='浮标上面的那个文字',icon=folium.Icon(color='green',icon='info-sign')).add_to(m)
# 浮标改图样

#标记一个空心的圈
folium.Circle(
    location=[40.2,117.7],
    radius=10000,
    color='crimson',
    popup='popup',
    fill=False
).add_to(m)

#标记一个实心圆
folium.CircleMarker(
    location=[39.2,117.7],
    radius=100,
    popup='popup',
    color='#DC143C',#圈的颜色
    fill=True,
    fill_color='#6495ED' #填充颜色
).add_to(m)
m.save('f1.html')
webbrowser.open('f1.html')

另外,folium还支持交互,比如鼠标点击的地方显示经纬度,或者直接在点击过的地方标记一个icon

import folium
import webbrowser as wb

# 地图上悬浮显示经纬度
m = folium.Map(
    location=[36.68159, 117.103565],
    zoom_start=10
)
m.add_child(folium.LatLngPopup())

# 手动打点功能
m.add_child(
    folium.ClickForMarker(popup='Waypoint')
)
m.save('f2.html')
wb.open('f2.html')
import numpy as np
import pandas as pd
import seaborn as sns
import folium
import webbrowser
from folium.plugins import HeatMap

#导入数据集:
posi = pd.read_excel("D:/Python/File/Cities2015.xlsx")
posi = posi.dropna()

#生成所需要的数组格式数据:
lat = np.array(posi["lat"][0:len(posi)])
lon = np.array(posi["lon"][0:len(posi)])
pop = np.array(posi["pop"][0:len(posi)],dtype=float)
gdp = np.array(posi["GDP"][0:len(posi)],dtype=float)
data1 = [[lat[i],lon[i],pop[i]] for i in range(len(posi))]

#创建以高德地图为底图的密度图:
map_osm = folium.Map(
    location=[35,110],
    zoom_start=5,
    tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
    attr="© 高德地图"
    )
#创建以腾讯地图为底图的密度图:
map_osm = folium.Map(
    location=[35,110],
    zoom_start=5,
    tiles='http://rt{s}.map.gtimg.com/realtimerender?z={z}&x={x}&y={y}&type=vector&style=0',
    attr="© 腾讯地图"
    )
#生成交互式地图:
HeatMap(data1).add_to(map_osm)
file_path = r"D:/Python/Image/People.html"
map_osm.save(file_path)
webbrowser.open(file_path)

folium的散点图更适合作展示,考虑到加载的顺畅性,不建议读取太大的数据,另外其组件可能会读一些外网的js,如果所在的网络不能访问google可能效果无法展示。解决办法是把里面的js地址替换成国内的镜像。

import pandas as pd
import numpy as np
import os
import folium
from folium import plugins
import webbrowser
import geopandas as gp

#数据导入:
full = pd.read_excel("D:/Python/File/Cities2015.xlsx")
full = full.dropna()

#创建地图对象:
schools_map = folium.Map(location=[full['lat'].mean(), full['lon'].mean()], zoom_start=10)
marker_cluster = plugins.MarkerCluster().add_to(schools_map) 

#标注数据点:
for name,row in full.iterrows():
     folium.Marker([row["lat"], row["lon"]], popup="{0}:{1}".format(row["cities"], row["GDP"])).add_to(marker_cluster)     
#逐行读取经纬度,数值,并且打点
#folium.RegularPolygonMarker([row["lat"], row["lon"]], popup="{0}:{1}".format(row["cities"], row["GDP"]),number_of_sides=10,radius=5).add_to(marker_cluster)

schools_map.save('schools_map.html') #保存到本地
webbrowser.open('schools_map.html')  #在浏览器中打开
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218315.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午7:33
下一篇 2026年3月18日 上午7:33


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号