【发布时间】:2019-12-05 03:49:36
【问题描述】:
我使用 matplotlib 和 geopandas 制作了地图(绘图)。我有两个数据框,一个包含整个国家的 shapefile,另一个包含一个地区。像这样;
df = geopandas.read_file('data/jamoat_exposure.shp')
df1 = df.query("DISTRICT=='Spitamen'")
我必须将两个数据框都添加到单个图中。所以我像这样把它们放在同一个轴上
df.plot(ax=ax, color='white', edgecolor='grey', label='what')
df1.plot(column='AGRI_AREA', ax=ax, cmap='tab20', edgecolor='#000000', label=df1['AGRI_AREA'])
但它会生成一个地图,其轴延伸到 df(国家标签)。然后我根据 df1 几何设置 xlim 和 ylim。
x1, y1, x2, y2 = df1.geometry.total_bounds
ax.set_xlim(x1-5000, x2+5000)
ax.set_ylim(y1-5000, y2+5000)
颜色部分来自 df1,其他背景线来自 df。此图适用于一个地区。如果我选择 df1 作为另一个区(df1=df.query(DISTICT='Ahuti')),它会产生具有不同轴的图形。像这样;
我希望所有地图都具有相同的宽度和高度(相同的 figsize)。我认为,我必须动态添加轴限制,以便它与实际大小相匹配。但我不知道怎么做?有什么想法吗?
【问题讨论】:
-
离开stackoverflow.com/questions/44970010/… 的答案,有一个fixed size axis demo 可能有效。您的每张地图都是单独的数字还是使用gridspec? (默认情况下,轴的大小相同)
-
对不起,我不是这样的。我希望所有
DISTRICT的轴的宽度和高度都相同,即使是shapefile区也不同 -
那么为什么演示不适用于您的任务?另外,将轴设置为相等会扭曲投影/几何吗? (基本上这对您的数据是有效的)
-
如果 x 和 y 是东向和北向,那么您可以 set_aspect(1)。要使子图大小相同,请执行 set_xlim/ylim to mean(x) + [-dx, dx] 其中 dx 大到足以覆盖最大的地图。
-
抱歉,我不必涵盖所有地图。我只需要显示
df1。df2仅用于底图。由于df1中几何形状和大小的变化,我无法将地图设置在相同的宽度和高度轴上。
标签: python matplotlib geopandas