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

Matplotlib中为多区域地理空间图设置统一图例颜色刻度

实现统一色阶的地理空间绘图

要让两个区域的地图使用完全一致的颜色刻度,核心是统一色阶的上下限(vmin/vmax)和配色方案(cmap),具体实现步骤如下:

方法1:基于全局数据范围统一色阶

如果希望色阶适配两个数据集的所有SCORE值,先计算全局的最小值和最大值:

import matplotlib.pyplot as plt

# 计算两个DataFrame中SCORE的全局最小/最大值
global_score_min = min(shapefile_prov['SCORE'].min(), shapefile_prov_can['SCORE'].min())
global_score_max = max(shapefile_prov['SCORE'].max(), shapefile_prov_can['SCORE'].max())

然后在绘图时传入这两个参数:

# 绘制西班牙本土地图(带图例)
shapefile_prov.plot(
    column="SCORE",
    legend=True,
    vmin=global_score_min,
    vmax=global_score_max,
    cmap='viridis'  # 紫到黄的渐变配色,符合你描述的需求
)
plt.xticks([])
plt.yticks([])

# 绘制加那利群岛地图(复用相同色阶,关闭重复图例)
shapefile_prov_can.plot(
    column="SCORE",
    legend=False,
    vmin=global_score_min,
    vmax=global_score_max,
    cmap='viridis'
)
plt.xticks([])
plt.yticks([])

plt.show()

方法2:使用你指定的固定色阶范围

如果明确要让0.325以下显示紫色、0.5以上显示黄色,直接指定固定的vmin和vmax:

import matplotlib.pyplot as plt

# 固定色阶范围
vmin_val = 0.325
vmax_val = 0.5

# 绘制西班牙本土
shapefile_prov.plot(
    column="SCORE",
    legend=True,
    vmin=vmin_val,
    vmax=vmax_val,
    cmap='viridis'
)
plt.xticks([])
plt.yticks([])

# 绘制加那利群岛
shapefile_prov_can.plot(
    column="SCORE",
    legend=False,
    vmin=vmin_val,
    vmax=vmax_val,
    cmap='viridis'
)
plt.xticks([])
plt.yticks([])

plt.show()

关键说明

  • vmin 和 vmax:强制色阶的上下边界,确保两个地图的颜色与SCORE值的对应关系完全一致
  • cmap:指定统一的配色方案,viridis 是matplotlib内置的紫-蓝-黄渐变配色,正好匹配你需要的紫色对应低分值、黄色对应高分值的需求
  • legend=False:避免在第二个图重复显示图例,保持视觉简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 09:19:57