1

正如标题所说,当我自己绘制一些 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])我的数据时,我的数据正确显示在绘图限制中,但底图没有改变,它们也没有对齐。

另请注意,如果我删除填充,我的数据会一直延伸到北、南和东侧的边缘,但地图会延伸到西边界上的相同(错误)位置。

4

1 回答 1

0

我发现了问题。

在我的实际代码plt.axis('equal')中,我隐藏了轴并关闭了框架等。那部分不在我上面的示例代码中,因为我认为它不相关。但是,由于其他人让set_xlim事情正常工作,问题一定出在某个地方。我刚开始断断续续地评论东西,发现这是罪魁祸首。

这个问题可以关闭/删除,但也许最好把它留在这里,以防有人遇到同样的问题并且也没有建立联系。

于 2021-07-14T09:44:19.437 回答