Python 更改crs并使用fig、ax绘图时,Geopandas绘图为空(没有fig、ax一切正常)?

Python 更改crs并使用fig、ax绘图时,Geopandas绘图为空(没有fig、ax一切正常)?,python,matplotlib,coordinates,geopandas,Python,Matplotlib,Coordinates,Geopandas,将matplotlib中的fig、ax与geopandas数据帧结合使用时,以及更改.crs时,绘图为空。有人知道为什么会发生这种情况以及如何解决吗 数据集: 更改crs是可以的,下面是我用子图制作的。如果您保持相同的ax对象,我认为可能很难看到它们,因为这两个限制完全不同 将geopandas导入为gpd 将matplotlib.pyplot作为plt导入 从FiON.CRS进口到EPSG 市政当局=gpd.read_文件(“比利时__市政当局.shp”) 图,ax=plt子批次(1,2) 对

将matplotlib中的fig、ax与geopandas数据帧结合使用时,以及更改.crs时,绘图为空。有人知道为什么会发生这种情况以及如何解决吗

数据集:


更改crs是可以的,下面是我用子图制作的。如果您保持相同的
ax
对象,我认为可能很难看到它们,因为这两个限制完全不同

将geopandas导入为gpd
将matplotlib.pyplot作为plt导入
从FiON.CRS进口到EPSG
市政当局=gpd.read_文件(“比利时__市政当局.shp”)
图,ax=plt子批次(1,2)
对于ax中的应用程序:
a、 刺['top'].设置为可见(假)
a、 脊椎['右'].设置为可见(假)
a、 脊椎['left'].设置_可见(假)
a、 脊椎['bottom'].set_可见(假)
a、 get_xaxis().设置_可见(False)
a、 get_yaxis().设置_可见(False)
.plot(ax=ax[0],color='red')
市政当局=市政当局至crs(“epsg:3395”)
城市。地块(ax=ax[1])
plt.show()
编辑: 在第二次调用中,您的ax不再引用可视的现有区域,因此,您可以这样做来重新创建它:


作为gpd导入geopandas
将matplotlib.pyplot作为plt导入
从FiON.CRS进口到EPSG
市政当局=gpd.read_文件(“比利时__市政当局.shp”)
def init():
图,ax=plt.子批次()
ax.spines['top'].set_可见(假)
ax.spines['右'].set_可见(假)
ax.脊椎['left'].set_可见(假)
ax.spines['bottom'].set_可见(假)
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
返回斧头
ax=init()
城市。地块(ax=ax)
plt.show()
ax=init()
市政当局=市政当局至crs(“epsg:3395”)
城市。地块(ax=ax)
plt.show()
城市。地块()
plt.show()

在上一次调用中,
matplotlib
创建了一个新的Axis对象,因为您没有提到要使用的任何轴。

在第一次
plt.show()
之后是否尝试过
plt.close()
?很可能你正试图在同一个图形上绘制这两个图形,这两个图形都非常遥远,结果看起来是空的。是的,我测试了它,但它没有改变任何东西。它仍然是空的。没错,我并不是真的在寻找一个能把它们放在同一张图中的情节,但它能起作用是很酷的。显然,如果我想在单独的crs中绘制单独的绘图,我必须将fig,ax设置两次。。避免出现空的绘图商店A,编辑才是我真正想要的!太好了,太棒了!现在我明白了为什么情节是空的。
import geopandas as gpd
import matplotlib.pyplot as plt
from fiona.crs import from_epsg

belgium = gpd.read_file("BELGIUM__Municipalities.shp")

fig,ax = plt.subplots()
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)

municipalities.plot(ax = ax) -> crs=WGS84 (lat/long)
plt.show()

municipalities = municipaliteis.to_crs("epsg:3395") -> crs to Mercator projection
municipalities.crs
municipalities.plot(ax = ax) -> plot = empty: Why does this happen, how to fix it?
plt.show()
municipalities.plot() -> plot = Mercator plot
plt.show()