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
相关产品推荐
相关产品推荐

