![](/img/trans.png)
[英]Exception has occurred: SSLError when adding basemap with Contextily to GeoPandas map
[英]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.