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

如何在Dash的px.choropleth中基于聚合值设置地图颜色?

不用新建DataFrame实现Dash Choropleth聚合着色的方法

你可以直接在px.choropleth的color参数里用Pandas的transform方法完成聚合,不需要提前生成新的DataFrame,具体实现如下:

1. 按国家总分着色

利用transform('sum')把每个国家的总分广播回原数据的每一行,同一个国家的所有条目都会带上相同的总分值,Plotly会以此为依据给国家着色:

import plotly.express as px

fig_total = px.choropleth(
    df,
    locations='Country',  # 指定国家列
    color=df.groupby('Country')['QualityScore'].transform('sum'),  # 直接计算并返回每行对应国家的总分
    locationmode='country names',  # 匹配国家名称的模式,可根据数据格式调整
    title='各国科研出版物质量总分'
)

2. 按国家论文数量着色

同理,用transform('count')计算每个国家的论文数量,广播回原数据后传入color参数:

fig_count = px.choropleth(
    df,
    locations='Country',
    color=df.groupby('Country')['Country'].transform('count'),  # 统计每个国家的论文数
    locationmode='country names',
    title='各国科研出版物数量'
)

原理说明

transform和普通的sum/count聚合不同,它不会返回分组后的精简结果集,而是把聚合值映射回原DataFrame的每一行,确保原数据行数不变。这样Plotly处理时,同一个国家的所有行都会使用相同的聚合值,最终渲染出正确的 choropleth 地图。

内容的提问来源于stack exchange,提问作者Akshay Chacko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:05:24