You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Plotly绘制各国频率等值区域图时底图加载失败报错

Plotly 世界地图分层设色实现方案

原代码报错核心原因

  • 变量名拼写错误:合并数据集时调用了未定义的yourdata变量,实际构造的国家统计DataFrame命名为data,直接触发NameError
  • 地理字段不匹配:配置locationmode='ISO-3'时,locations参数传入的是国家全名字段,和ISO-3三字母国家编码规则不匹配,无法完成地理坐标映射
  • 外部资源依赖问题:手动传入github仓库的geojson地址作为底图,受网络限制很容易加载失败,实际上绘制国家级choropleth图不需要手动引入外部geojson
  • 数据集合并逻辑冗余:直接merge全量多年份的gapminder数据会产生大量重复行,没必要保留多余的年份、人口等无关字段

修正后可直接运行的代码

import pandas as pd
import plotly.express as px

# 读取gapminder基础数据,仅提取需要的国家名、ISO-3编码映射,去重避免重复行
country_map = px.data.gapminder()[['country', 'iso_alpha']].drop_duplicates()

# 自定义的国家频率统计数据
d = {
    'Australia':[3],
    'Brazil' :[2],
    'Canada':[6],
    'Chile':[3],
    'Denmark':[1],
    'France':[16],
    'Germany':[3],
    'Israel':[1]
}

data = pd.DataFrame(d).T.reset_index()
data.columns=['country', 'count']

# 合并ISO编码与统计数据,修正原变量名错误
df = pd.merge(country_map, data, how='left', on='country')

# 绘制分层设色地图,使用内置地理边界无需外部geojson
fig = px.choropleth(
    df, 
    locations="iso_alpha",
    locationmode='ISO-3',
    color="count",
    color_continuous_scale="Blues", # 可自定义色阶
    labels={'count':'统计频次'}, # 自定义图例名称
    title='部分国家特定频率统计分布图'
)

# 调整布局,优化显示效果
fig.update_geos(showcountries=True, countrycolor="lightgray", showcoastlines=True)
fig.update_layout(margin={"r":0,"t":30,"l":0,"b":0})
fig.show()

实现效果说明

  • 存在统计值的国家会按照count字段的数值大小自动映射色阶,完成分层设色展示
  • 无统计数据的国家默认显示为浅灰色背景,不会出现底图加载失败问题
  • 不需要依赖外部geojson资源,调用Plotly内置地理底图即可稳定运行

原报错截图参考

代码运行报错截图

内容的提问来源于stack exchange,提问作者Luisa Fernanda Velasquez Camac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 18:39:19