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

Posted

技术标签:

【中文标题】如何以地图的形式为子图提供统一的色标?【英文标题】:How do I have uniform color scale for subplots in the form of maps? 【发布时间】:2021-03-26 14:55:25 【问题描述】:

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

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

我希望所有年份都有一个统一的色标并插入一个图例。如何为每个子图(代表每年)设置统一的色标,如何为所有子图插入一个共同的图例?

【问题讨论】:

在到达plot()时指定相同的vminvmax 【参考方案1】:

对于常见的颜色图,您需要使用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)

现在让我们为它们添加颜色条。我使用Colorbar on Geopandas 来学习如何做到这一点。

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 的许多功能,因此您可以更轻松地转移知识和搜索。

【讨论】:

以上是关于如何以地图的形式为子图提供统一的色标?的主要内容,如果未能解决你的问题,请参考以下文章

寻找有界子图之间的最小割集

将值映射到色标

Django - 当用户选择地图上的点时,如何以模式形式包含地图并将坐标保存到数据库?

关于百度地图“商户免费标注”,一个集团旗下有多家代理商,能否只提供集团执照统一去标注多家代理店呢?

如何在 Matplotlib 中为子图添加标题

将值映射到色标