Python 在GeoPandas和Matplotlib中使用图层进行映射:问题是我无法设置所需的图大小

Python 在GeoPandas和Matplotlib中使用图层进行映射:问题是我无法设置所需的图大小,python,matplotlib,gis,geopandas,Python,Matplotlib,Gis,Geopandas,其想法是在有底图(r5_base)的图层中绘制,然后通过gpd覆盖“regionbybranch” 从下面的图片可以看出,创建了两个图形,但我只希望有一个。所需地图与第二个图形正确绘制,但未遵循所需的“figsize” # Isolate Region on map r5_base = bars[bars.Reg_Name=='REGION V (BICOL REGION)'] # Isolate region from OP data region=mpabars_gdf[mpabars_g

其想法是在有底图(r5_base)的图层中绘制,然后通过gpd覆盖“regionbybranch”

从下面的图片可以看出,创建了两个图形,但我只希望有一个。所需地图与第二个图形正确绘制,但未遵循所需的“figsize”

# Isolate Region on map 
r5_base = bars[bars.Reg_Name=='REGION V (BICOL REGION)']
# Isolate region from OP data
region=mpabars_gdf[mpabars_gdf.RegionName=='Bicol Region']

# Plot area.
regionbybranch = region.dissolve(by='BranchName', aggfunc='sum',as_index=False)

fig, ax = plt.subplots(1,1,sharex=True, sharey= True, figsize=(30,30))
base = r5_base.plot(color='gray')

regionbybranch.plot(ax=base, linewidth=0.5, edgecolor='black', legend= False, column='Penetration',cmap='viridis')

# plt.title('Market Penetration on Bicol Region');
# fig.savefig(“map_export.png”, dpi=300)

我认为在调用绘图函数时,必须设置正确的轴名称。像这样的方法应该会奏效:

fig, ax = plt.subplots(1,1,sharex=True, sharey= True, figsize=(30,30))
base = r5_base.plot(ax=ax,color='gray')

regionbybranch.plot(ax=ax, linewidth=0.5, edgecolor='black', 
            legend= False, column='Penetration',cmap='viridis')

是的,这个很好用。。。但是我还是不明白为什么第一次它不起作用。因为你基本上调用了不同的子地块/数字。当您使用
fig,ax=plt.subplot(…)
创建地物和子地块时,您也给了它们一个名称(在本例中为fig和ax)。因此,如果要在该特定子地块上绘图,则必须在调用绘图函数时指定它(这是通过
ax=ax
完成的)。否则将生成一个新图形。如果您想避免歧义,可以以不同的方式调用子地块,例如,
fig,ax0=plt.subplot(…)
然后调用
r5_base.plot(ax=ax0,…)