Plotly地图颜色深度调整及非亚洲国家批量移除方法咨询
优化亚洲通胀率Choropleth地图:过滤非亚洲数据 + 提升颜色对比度
一、批量移除非亚洲国家数据
要过滤掉非亚洲国家,无需逐个标记,可通过获取亚洲国家的ISO-3代码列表来筛选数据集:
- 借助
pycountry库自动获取亚洲国家的ISO-3代码(未安装则先执行pip install pycountry); - 用代码列表筛选出仅包含亚洲国家的数据。
实现代码片段:
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
相关产品推荐
相关产品推荐

