如何在Python的Choropleth地图上为非洲各国添加标注文本/数值
解决方法
要在Plotly的非洲 choropleth 地图上添加文本/数值标注,你可以通过**添加散点地理图层(Scattergeo)**来实现,具体步骤如下:
1. 修正数据错误(可选但重要)
你的CSV数据里国家和首都对应错误,正确的对应关系应该是:
country capital longitude latitude Nigeria Abuja 7.53 8.93 Mali Bamako -8 12.63
2. 修改代码添加标注
在原有的choropleth代码基础上,添加add_trace插入文本标注层,指定标注的位置(经纬度)和显示内容:
import geopandas as gpd import plotly.express as px import pandas as pd # 读取数据(替换为你的文件路径) df = pd.read_csv("your_file.csv") # 修正数据错误(如果需要) df.loc[df['country'] == 'Nigeria', ['capital', 'longitude', 'latitude']] = ['Abuja', 7.53, 8.93] df.loc[df['country'] == 'Mali', ['capital', 'longitude', 'latitude']] = ['Bamako', -8, 12.63] # 绘制基础着色地图 fig = px.choropleth(df, locationmode='country names', locations='country', scope='africa', color='country') # 添加文本标注:可替换为首都、数值等内容 fig.add_trace(px.scatter_geo(df, lon='longitude', lat='latitude', text='country', # 这里可替换为'capital'或自定义数值字段 mode='text', textfont=dict(size=12, color='black')).data[0]) # 优化布局(可选) fig.update_layout(showlegend=False) # 不需要颜色图例可关闭 fig.show()
关键说明
px.scatter_geo的mode='text'会让图层仅显示文本,不生成散点标记text参数可自由指定显示内容:比如text='capital'显示首都名称,text=df['population']显示统计数值- 通过
textfont可以调整文本的大小、颜色,避免与地图底色冲突 - 标注位置使用国家中心经纬度即可,你CSV中的数据刚好适配这个需求
内容的提问来源于stack exchange,提问作者Ahmed
相关产品推荐
相关产品推荐

