如何以地图的形式为子图提供统一的色标?
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()
时指定相同的vmin
和vmax
。
【参考方案1】:
对于常见的颜色图,您需要使用vmin
和vmax
关键字参数。首先,让我们计算它们。
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 - 当用户选择地图上的点时,如何以模式形式包含地图并将坐标保存到数据库?