绘制 geopandas 会改变 matplotlib 中的图形大小

Posted

技术标签:

【中文标题】绘制 geopandas 会改变 matplotlib 中的图形大小【英文标题】:Plotting geopandas changes figure size in matplotlib 【发布时间】:2021-08-27 15:50:21 【问题描述】:

所以我创建了一个 matplotlib 图形,然后通过 shape 文件添加 3 个(德国、斯洛伐克、捷克)国家。

我明确地将 figsize 设置为 (15, 15)germanyczechslovakia 是读取的形状文件,最后germany_pipeGeoDataFrame,它在matplotlib 图中添加了蓝线。

fig, ax = plt.subplots(1, 1, figsize=(15, 15))

germany.plot(ax=ax, color='lightgray', edgecolor='white')

germany_pipe.plot(ax=ax, color='cornflowerblue',
                  linewidth=germany_pipe['diameter'].values/400)

czech.plot(ax=ax, color='lightgray', edgecolor='white')
slovakia.plot(ax=ax, color='lightgray', edgecolor='white')

此图后如下图:

然后我还绘制了另一个GeoDataFrame,它将其他行绘制为红色,通过:data_geo.plot(ax=ax, color='red', linewidth=data_geo['diameter'].values/400)

然而,在这一点之后,matplotlib 图形由于某种原因改变了大小。 你知道这是什么原因吗?

print(data_geo.crs)
None
print(germany_pipe.crs)
epsg:4326

【问题讨论】:

请显示以下内容的输出:germany.crsdata_geo.crs。它们是一样的吗? @swatchai 我将它们添加到问题中 哇,我设置data_geo.crs = 'epsg:4326' 后,它起作用了,请写一个答案,我会接受! @swatchai 【参考方案1】:

在公共ax 轴上正确绘制多个geodataframes 需要正确设置所有这些geodataframes。优选地,它们都应该具有相同的CRS,以便于操作,而无需(不必要)在绘图指令中指定坐标变换。

要读取 gdf1 地理数据框的 CRS,可以使用:

gdf1.crs

如果您需要为此地理数据框设置 CRS(例如“epsg:3395”),您可以执行以下操作。

gdf1.crs = 'epsg:3395'

【讨论】:

以上是关于绘制 geopandas 会改变 matplotlib 中的图形大小的主要内容,如果未能解决你的问题,请参考以下文章

用 Colomap 绘制线串 - Geopandas 和 Folium

用 shapefile 或 geopandas 绘制蒙面的南极洲

使用 geopandas 和 matplotlib 绘制地图

geopandas轻松绘制交互式在线地图

地图可视化:geopandas绘制拓扑着色地图

地图可视化:geopandas绘制拓扑着色地图