求助:如何用Python在地图上绘制带名称的经纬度数据
解决经纬度地图绘制问题
你的代码存在几处关键问题,修正后即可完成带名称的点位地图绘制:
问题梳理
- 你的数据表是空格分隔格式,但
pd.read_csv默认用逗号分隔,直接读取会导致列错位 - 注释的绘图代码里参数不匹配:
lon='long'对应的数据列实际是lon,hover_name="id"对应的数据列实际是name - 缺少
plotly.express的导入语句,取消注释后会报错
修正后的完整代码
import pandas as pd import plotly.express as px # 读取空格分隔的数据,处理多空格情况 df = pd.read_csv("input_latlon.csv", sep='\s+') # 绘制地理散点图,匹配正确列名 fig = px.scatter_geo( df, lat='lat', lon='lon', hover_name="name", # 鼠标悬停显示点位名称 title="经纬度点位地图" ) # 调整地图视角,聚焦到数据所在的青藏高原区域 fig.update_geos( center=dict(lat=35.5, lon=85.4), zoom=7 # 缩放级别,数值越大视角越近 ) fig.update_layout(title_x=0.5) # 标题居中 fig.show()
可选优化(更清晰底图)
如果需要更精细的地图底图,可以改用scatter_mapbox,需提前申请免费的Mapbox Token(可在Plotly官网获取):
import pandas as pd import plotly.express as px df = pd.read_csv("input_latlon.csv", sep='\s+') # 设置Mapbox Token px.set_mapbox_access_token("你的Mapbox Token") fig = px.scatter_mapbox( df, lat='lat', lon='lon', hover_name="name", zoom=7, center=dict(lat=35.5, lon=85.4), title="经纬度点位地图" ) fig.show()
内容的提问来源于stack exchange,提问作者user19520518
相关产品推荐
相关产品推荐

