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

Plotly地图颜色深度调整及非亚洲国家批量移除方法咨询

优化亚洲通胀率Choropleth地图:过滤非亚洲数据 + 提升颜色对比度

一、批量移除非亚洲国家数据

要过滤掉非亚洲国家,无需逐个标记,可通过获取亚洲国家的ISO-3代码列表来筛选数据集:

  1. 借助pycountry库自动获取亚洲国家的ISO-3代码(未安装则先执行pip install pycountry);
  2. 用代码列表筛选出仅包含亚洲国家的数据。

实现代码片段:

import pycountry

# 获取所有亚洲国家的ISO-3代码
asian_countries = [country.alpha_3 for country in pycountry.countries if country.continent == 'Asia']

# 筛选亚洲国家数据
df1 = df1[df1['economy'].isin(asian_countries)]

二、提升颜色对比度

颜色辨识度低的核心原因是当前颜色刻度基于全球数据极值,压缩了亚洲区域的数值差异,可通过两种方式优化:

方法1:基于亚洲数据极值调整颜色范围

用range_color参数将颜色刻度限定为亚洲数据的最小值和最大值,让颜色变化更贴合区域内的数值差异:

# 计算亚洲数据的极值
min_val = df1['counts'].min()
max_val = df1['counts'].max()

# 在绘图时添加range_color参数
fig = px.choropleth(df1, locations="economy",
                    locationmode='ISO-3',
                    color="counts", 
                    title="Asia Inflation Rate 2021",
                    hover_name="economy",
                    scope='asia',
                    color_continuous_scale=px.colors.sequential.Reds,
                    range_color=[min_val, max_val])  # 限定颜色范围

方法2:替换高对比度色阶

选择对比度更强的连续色阶,比如px.colors.sequential.Inferno或px.colors.diverging.RdYlGn(适用于区分正负通胀):

color_continuous_scale=px.colors.sequential.Inferno  # 替换为高对比度色阶

整合后的完整代码

import plotly.express as px
import pandas as pd
import pycountry
from wb import data

# 获取世界银行通胀率数据
df = data.DataFrame('FP.CPI.TOTL.ZG')
df1 = df['YR2021'].dropna().reset_index()
df1 = df1.rename(columns={'YR2021': 'counts'})

# 过滤亚洲国家数据
asian_countries = [country.alpha_3 for country in pycountry.countries if country.continent == 'Asia']
df1 = df1[df1['economy'].isin(asian_countries)]

# 计算亚洲数据极值,调整颜色范围
min_val = df1['counts'].min()
max_val = df1['counts'].max()

# 绘制优化后的地图
fig = px.choropleth(df1, locations="economy",
                    locationmode='ISO-3',
                    color="counts", 
                    title="Asia Inflation Rate 2021",
                    hover_name="economy",
                    scope='asia',
                    color_continuous_scale=px.colors.sequential.Inferno,
                    range_color=[min_val, max_val])

fig.update_layout(title_text='Asia Inflation Rate 2021', title_x=0.5)
fig.show()

补充说明

  • 若不想安装pycountry,可手动定义亚洲国家的ISO-3列表,但pycountry能自动维护最新国家代码,更省心;
  • 若wb库返回的economy字段不是ISO-3代码,需调整locationmode参数匹配(比如国家名称对应locationmode='country names')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:46:37