簡體   English   中英

添加 Contextily 底圖時忽略繪圖限制

[英]Plot limits are ignored when adding Contextily basemap

正如標題所說,當我自己繪制一些 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])我的數據在繪圖限制中正確顯示,但底圖未更改且未對齊。

另請注意,如果我刪除填充,我的數據會直接到達北、南和東邊的邊緣,但地圖會延伸到西邊界上的相同(錯誤)位置。

我發現了問題。

在我的實際代碼中,我將plt.axis('equal')放在了我隱藏軸和設置框架的位置,等等。那部分不在我上面的示例代碼中,因為我認為它不相關。 但是,由於其他人讓set_xlim東西起作用,所以問題一定出在某個地方。 我剛開始斷斷續續地評論東西,發現那是罪魁禍首。

這個問題可以關閉/刪除,但也許最好把它留在這里,以防有人遇到同樣的問題並且也沒有建立聯系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM