Geopandas 减小图例大小(并删除地图下方的空白)

Posted

技术标签:

【中文标题】Geopandas 减小图例大小(并删除地图下方的空白)【英文标题】:Geopandas reduce legend size (and remove white space below map) 【发布时间】:2019-06-11 15:53:51 【问题描述】:

我想知道如何更改 Geopandas 自动生成的图例。大多数情况下,我想减小它的大小,因为它在生成的图像上相当大。图例似乎占据了所有可用空间。

另外一个问题,你知道如何删除我的地图下方的空白吗?我试过了

pad_inches = 0, bbox_inches='tight' 

但我在地图下方仍有空白。

感谢您的帮助。

【问题讨论】:

如果把相关代码分享出来,帮助会更容易。 【参考方案1】:

这对我有用:

some_geodataframe.plot(..., legend=True, legend_kwds='shrink': 0.3)

此处的其他选项:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.colorbar.html

【讨论】:

“简单胜于复杂” - 谢谢!【参考方案2】:

为了展示如何获得由geopandas' plot() 方法创建的地图随附的颜色条图例的适当大小,我使用了内置的 'naturalearth_lowres' 数据集。

工作代码如下。

import matplotlib.pyplot as plt
import geopandas as gpd

world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
world = world[(world.name != "Antarctica") & (world.name != "Fr. S. Antarctic Lands")]  # exclude 2 no-man lands

像往常一样绘图,抓住绘图返回的轴'ax'

colormap = "copper_r"   # add _r to reverse the colormap
ax = world.plot(column='pop_est', cmap=colormap, \
                figsize=[12,9], \
                vmin=min(world.pop_est), vmax=max(world.pop_est))

地图边缘/面部装饰

ax.set_title('World Population')
ax.grid() 

颜色条将由...创建

fig = ax.get_figure()
# add colorbar axes to the figure
# here, need trial-and-error to get [l,b,w,h] right
# l:left, b:bottom, w:width, h:height; in normalized unit (0-1)
cbax = fig.add_axes([0.95, 0.3, 0.03, 0.39])   
cbax.set_title('Population')

sm = plt.cm.ScalarMappable(cmap=colormap, \
                norm=plt.Normalize(vmin=min(world.pop_est), vmax=max(world.pop_est)))

在这个阶段,'cbax' 只是一个空白轴,x 和 y 轴上不需要的标签将标量可映射'sm'的数组空白

sm._A = []

将颜色条绘制到“cbax”中

fig.colorbar(sm, cax=cbax, format="%d")

# dont use: plt.tight_layout()
plt.show()

阅读代码中的 cmets 以获得有用的信息。

结果图:

【讨论】:

Matplotlib 是地狱。 @n49o7 pandas/geopandas with matplotlib 作为图形后端是?

以上是关于Geopandas 减小图例大小(并删除地图下方的空白)的主要内容,如果未能解决你的问题,请参考以下文章

使用 geopandas 从热图中的图例中删除 NaN

向 GeoPandas 图例添加自定义名称

如何减小图中图例的大小?

Python 批量获取地点经纬度坐标,并利用geopandas在地图上绘制经纬度的点

Python 批量获取地点经纬度坐标,并利用geopandas在地图上绘制经纬度的点

在 Altair 中更改图例的大小