0

我想通过导入瑞士的 shapefile ( https://www.swisstopo.admin.ch/de/geodata/landscape/boundaries3d.html ) 并放大感兴趣的区域来生成苏黎世州的图。在最后一步中,我想将生成的图像保存为 .eps 文件。问题是保存图像文件为空。

首先导入包 geopandas 和 matplotlib

import geopandas
import matplotlib.pyplot as plt

然后加载shapefile的数据

gdf = geopandas.read_file("swissBOUNDARIES3D_1_3_TLM_KANTONSGEBIET.shp")

然后绘制瑞士地图。苏黎世州的颜色与所有其他州不同。在此之后,完成了对苏黎世州的放大。

fig = plt.figure(figsize=(30, 18))
ax2 = gdf.plot(figsize=(30,18), edgecolor='black')
gdf[gdf.NAME == "Zürich"].plot(edgecolor='black', color='lightskyblue', ax=ax2)
gdf[gdf.NAME != "Zürich"].plot(edgecolor='black', color='aliceblue', ax=ax2)
plt.xlim(650000,750000)
plt.ylim(220000,290000)

然后应保存生成的图像。


fig.savefig("filename2.eps", format='eps')
plt.show()

但是生成的图像是空的。当格式更改为 png 时,它也是空的。

4

1 回答 1

0

生成的图像是空的,因为您的绘图不在正确的图形上。gdf.plot()创建一个新图形。为了保存该数字,您可以删除调用plt.figure()并从轴中获取该数字:

ax2.figure.savefig("filename2.eps", format='eps')

或创建一个子图并将创建的轴作为参数传递给第一个gdf.plot()

fig, ax2 = plt.subplots(figsize=(30,18))
gdf.plot(edgecolor='black', ax=ax2)
gdf[gdf.NAME == "Zürich"].plot(edgecolor='black', color='lightskyblue', ax=ax2)
gdf[gdf.NAME != "Zürich"].plot(edgecolor='black', color='aliceblue', ax=ax2)
plt.xlim(650000,750000)
plt.ylim(220000,290000)
fig.savefig("filename2.eps", format='eps')
于 2021-07-04T15:52:23.673 回答