我需要在底图中添加几个矩形。我需要四个矩形,纬度和对数范围如下。在
1)llcrnrlon=-10,urcrnlon=10,llcrnrlat=35,urcrnlat=60
2)llcrnrlon=10.5,urcrnlon=35,llcrnrlat=35,urcrnlat=60
3)llcrnrlon=35.5,urcrnlon=52,llcrnrlat=30,urcrnlat=55
4)llcrnrlon=-20,urcrnlon=35,llcrnrlat=20,urcrnlat=34.5
我的剧本在下面。我找到了“多边形”软件包来添加线条,但我不知道该怎么做。请帮帮我!!提前谢谢你的帮助!在
from mpl_toolkits.basemap import Basemap
m=basemaputpart.Basemap(llcrnrlon=-60, llcrnrlat=20, urcrnrlon=60, urcrnrlat=70, resolution='i', projection='cyl', lon_0=0, lat_0=45)
lon1=np.array([[-180.+j*0.5 for j in range(721)] for i in range(181)])
lat1=np.array([[i*0.5 for j in range(721)] for i in range(181) ])
Nx1,Ny1=m(lon1,lat1,inverse=False)
toplot=data[:,:]
toplot[data==0]=np.nan
toplot=np.ma.masked_invalid(toplot)
plt.pcolor(Nx1,Ny1,np.log(toplot),vmin=0, vmax=5)
cbar=plt.colorbar()
m.drawcoastlines(zorder=2)
m.drawcountries(zorder=2)
llcrnrlon = -10
urcrnrlon = 10
llcrnrlat = 35
urcrnrlat = 60
lower_left = (llcrnrlon, llcrnrlat)
lower_right= (urcrnrlon, llcrnrlat)
upper_left = (llcrnrlon, urcrnrlat)
upper_right= (urcrnrlon, urcrnrlat)
plot_rec(m, lower_left, upper_left, lower_right, upper_right)
然后我看到“类型错误:'tuple'对象不可调用”
代替这一部分,我添加了一个你首先建议的。在
^{pr2}$那么我在我的图里没有看到任何盒子。我得再放一个,不是吗表演()?? 在
另外,你能告诉我怎么在盒子里填数字吗(例如,盒子左上角有1个号码)?如何获得我的数据中所有点的值的总和,以及(框中值的总和)与(我的数据的所有点中的值的总和)的百分比?我要求太多了。。让我知道你能给我什么,无论如何都太好了!!!在
非常感谢!!在
下面的函数可以满足您的需要。bmap是您的basemap对象,lonmin、lonmax、latmin、latmax用经纬度定义域。在代码中通过调用Basemap(…)生成bmap之后,需要调用
plot_rectangle
函数。相反,如果您在地图空间中寻找矩形,其边界遵循平行线和子午线,则以下函数适用于我。m是basemap对象。在
这一点很棘手,在很多投影类型中,矩形并不是真正的矩形。所以当你说“矩形”时,你指的是地图空间中的实际矩形,还是仅仅是像素空间中的矩形?两者的要求截然不同
但是假设你想在地图空间里。最快的方法是只使用Basemap的plot方法,如下所示:
其中
bmap
是您的地图,lower_left
等是这些角上的lon-lat元组。在使用示例更新:
您要求提供一个用法示例,因此您可以:
^{pr2}$使用列表理解来生成正确的角点集绝对可以更优雅地完成这项工作,但这应该可以让您开始。在
更新2
所以这里似乎有些混乱。
plot_rec
是一个function。它应该放在不与脚本其余部分内联的地方。它本身什么也做不了。当您调用此处时,它会:相关问题 更多 >
编程相关推荐