如何以地图的形式为子图提供统一的色标?

How do I have uniform color scale for subplots in the form of maps?

我使用 geopandas 绘制了韩国地图上从 2021 年到 2030 年的年度煤炭淘汰数据区域分布。如下所示:

一个问题是每年或子图的色标不同,因为它们基于数据框的不同列,如图

我希望所有年份都有一个统一的色标并插入一个图例。如何为每个子图(代表每年)使用统一的色标以及如何为所有子图插入通用图例?

对于普通颜色图,您需要使用 vminvmax 关键字参数。首先,让我们计算它们。

vmin = min(df[year].min() for year in range(2021, 2027))
vmax = max(df[year].max() for year in range(2021, 2027))

并修改所有地块如下:

south_korea.plot(2021, cmap="Reds", ax=axs[0, 0], vmin=vmin, vmax=vmax)

现在让我们为他们添加颜色栏。我用 来学习如何做。

cax = fig.add_axes([0.9, 0.1, 0.03, 0.8])
sm = plt.cm.ScalarMappable(cmap='Reds', norm=plt.Normalize(vmin=vmin, vmax=vmax))
# fake up the array of the scalar mappable. Urgh...
sm._A = []
fig.colorbar(sm, cax=cax)

请注意,geopandas 使用了 matplotlib 的许多功能,因此您可以更轻松地传递知识和搜索。