我試圖圍繞matplotlib
的basemap
API進行打包。我想要做的是在圓柱投影上繪製一個非常小的區域(每個方向幾公里)的緯度和經度數據。在matplotlib底圖中設置數據限制
的問題是,我無法理解如何llcrnrlon
,llcrnrlat
,urcrnrlon
和urcrnrlat
參數的構造函數Basemap
工作。
據我的理解,llcrnrlon
是西部最經度和llcrnrlat
是南方最緯度和urcrnrlon
和urcrnrlat
是東部最北和最經度和緯度分別。
在所有這些情況下,給定一組座標後,(數值上)最小的經度是最西部,最小的緯度是最南部,反之亦然。這種理解是否正確?
我可以通過在底層Axes
對象上設置xlim和ylim來獲得圖表的工作方式,但是在底圖構造函數中使用相同的值似乎會將我的數據從圖上移開。
EDIT:請參閱以下代碼的問題的再現:
from matplotlib import pyplot
from mpl_toolkits import basemap
import random
lat_bounds = 52.063443, 52.072587
long_bounds = 1.010408, 1.024502
ax1 = pyplot.subplot(121)
ax2 = pyplot.subplot(122)
ax1.set_title('With ll* rr*')
ax2.set_title('With default values')
my_map1 = basemap.Basemap(projection='cyl', llcrnrlat=lat_bounds[0], llcrnrlon=long_bounds[0],
urcrnrlat=lat_bounds[1], urcrnrlon=long_bounds[1], ax=ax1)
my_map2 = basemap.Basemap(projection='cyl', ax=ax2)
data_lats = [random.uniform(*lat_bounds) for i in xrange(50)]
data_lons = [random.uniform(*long_bounds) for i in xrange(50)]
my_map1.plot(data_lats, data_lons)
my_map2.plot(data_lats, data_lons)
pyplot.show()
在下面的圖中,右側圖像通過使用Basemap(projection='cyl')
和左手側圖像製作是通過使用由Basemap(projection='cyl', llcrnrlat=lat_bounds[0], llcrnrlon=long_bounds[0], urcrnrlat=lat_bounds[1], urcrnrlon=long_bounds[1], ax=ax1)
注意右側圖像中的點,當使用matplotlib工具欄進行縮放時,點將成爲第二個圖像。
你是對的參數。 'llcrnrlon'代表「左下角經度」等。此外,''cyl''(柱面)是「投影」關鍵字的默認值,因此您處於正確的軌道上。你確實需要注意諸如反斜槓(180E)之類的事情。你可以發佈你想要繪製的值嗎? –
另外,手動設置'ax1.set_xlim(* lat_bounds)'和'ax1.ylim(* long_bounds)'也有訣竅。 –
@ThomChubb:請參閱編輯後。 –