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

使用Matplotlib绘制全国选区得票率地图及首都局部放大图的问题

解决Matplotlib地图局部放大图颜色标尺匹配全国数据的问题

问题背景

已通过Matplotlib绘制全国政党选区得票率地图,需添加都柏林区域局部放大图优化可读性,但当前局部图的颜色标尺基于都柏林本地数据,无法与全国数据的颜色映射保持一致,导致对比混乱。

使用的原始代码:

a_combined_path = 'c:\my_path'
fig, (ax1, ax2) = plt.subplots(1, 2)
fig.set_size_inches(10,10)
a_2020.plot(ax=ax1, column='Party Vote Share', cmap='Greens', edgecolor='black', linewidth = 0.5)
a_dublin.plot(ax=ax2, column='Party Vote Share', cmap='Greens', legend=True, edgecolor='black', linewidth = 0.5)
ax1.set_axis_off()
ax2.set_axis_off()
fig.suptitle('Aontú vote share in the 2020 elections\nby constituency (Pct of total vote)', size = 16)
plt.savefig(a_combined_path, dpi=600)

核心解决方案

通过统一颜色映射的极值范围,强制局部图使用全国数据的vmin(最小值)和vmax(最大值),确保颜色标尺完全对齐。同时优化布局和图例,提升整体美观性。

修改后的完整代码

a_combined_path = r'c:\my_path'  # 用raw字符串避免路径转义问题
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6))  # 调整画布比例更协调

# 计算全国范围的得票率极值,作为统一颜色标尺的基准
vote_min = a_2020['Party Vote Share'].min()
vote_max = a_2020['Party Vote Share'].max()

# 绘制全国地图,绑定统一颜色范围
a_2020.plot(ax=ax1, 
            column='Party Vote Share', 
            cmap='Greens', 
            edgecolor='black', 
            linewidth=0.5,
            vmin=vote_min, 
            vmax=vote_max)

# 绘制都柏林局部图,使用完全相同的颜色范围,图例放在局部图上
dublin_plot = a_dublin.plot(ax=ax2, 
                            column='Party Vote Share', 
                            cmap='Greens', 
                            edgecolor='black', 
                            linewidth=0.5,
                            vmin=vote_min, 
                            vmax=vote_max,
                            legend=True,
                            legend_kwds={'shrink': 0.8})  # 调整图例大小适配子图

# 关闭坐标轴,保持地图简洁
ax1.set_axis_off()
ax2.set_axis_off()

# 设置标题,调整位置避免被裁剪
fig.suptitle('Aontú 2020年选举得票率\n按选区统计(占总票数百分比)', size=16, y=1.02)

# 保存图片,确保标题和图例完整保留
plt.savefig(a_combined_path, dpi=600, bbox_inches='tight')

关键调整说明

  • 统一颜色范围:通过vmin和vmax参数,让两个子图共享全国数据的得票率极值,彻底解决局部图标尺独立的问题,颜色与全国数据完全对应。
  • 路径与布局优化:用raw字符串处理文件路径避免转义错误;调整figsize让左右布局更舒展,避免正方形画布的拥挤感。
  • 图例与细节:通过legend_kwds调整图例大小;bbox_inches='tight'确保保存图片时标题和图例不被裁剪。

进阶优化:标记局部图对应位置(可选)

若需更清晰的关联,可在全国地图上用红色框标记都柏林区域:

# 获取都柏林选区的边界坐标
dublin_bounds = a_dublin.total_bounds
# 在全国地图上添加红色边框标记都柏林范围
ax1.add_patch(plt.Rectangle((dublin_bounds[0], dublin_bounds[1]), 
                            dublin_bounds[2]-dublin_bounds[0], 
                            dublin_bounds[3]-dublin_bounds[1],
                            fill=False, edgecolor='red', linewidth=2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:05:01