正如标题所说,当我自己绘制一些 geopandas 数据时,绘图限制与我指定的完全一样,但是当我通过上下文(v1.1.0)添加底图时,图块的范围决定了底层图像的大小,并且情节限制成为图像的延伸。结果,我实际想要绘制的区域更小并且经常偏离中心(这很糟糕)。
其他人已经发布,他们通过使用 xlim 和 ylim 参数修复了范围内的类似问题,但这对我不起作用。
xMin, yMin, xMax, yMax = list(theData['geometry'].total_bounds)
##-- add a buffer around the data area.
xMin = xMin - (0.03 * (xMax - xMin))
xMax = xMax + (0.03 * (xMax - xMin))
yMin = yMin - (0.03 * (yMax - yMin))
yMax = yMax + (0.03 * (yMax - yMin))
ax = theData.plot(ax=ax, column=theVariable)
ax.set_xlim(xMin, xMax)
ax.set_ylim(yMin, yMax)
basemap,extent = ctx.bounds2img(xMin, yMin, xMax, yMax, zoom=12, source=tileSource)
ax.imshow(basemap, extent=extent)
ax.set_xlim(xMin, xMax)
ax.set_ylim(yMin, yMax)
plt.show()
在我的特殊情况下,xMin 的值为 15,535,161,但该图向西延伸超过 15,530,000(小于 xMin)。
上下文文档说该选项reset_extent
具有[Default=True]
和If True, the extent of the basemap added is reset to the original extent (xlim, ylim) of ax
. 然而,这似乎是一个谎言,因为它没有发生。
您可以在我的代码片段中看到,我在绘图和底图之前和之后明确设置了 lims,这也没有效果。我希望它将绘图的可见部分裁剪到绘图范围内(就像我用于绘制地图的其他语言一样)。
所以,要么这在上下文中被打破,它实际上不应该做我正在寻找的(显然是想要的)裁剪,或者我做错了我找不到或弄清楚的事情。希望有人能发现问题并告诉我如何让这些地图图看起来应该如何。
请注意,当我将 imshow 命令更改为ax.imshow(basemap, extent=[xMin, xMax, yMin, yMax])
我的数据时,我的数据正确显示在绘图限制中,但底图没有改变,它们也没有对齐。
另请注意,如果我删除填充,我的数据会一直延伸到北、南和东侧的边缘,但地图会延伸到西边界上的相同(错误)位置。