【发布时间】:2014-06-12 01:45:40
【问题描述】:
考虑到其他人的例子,我试图解决这个问题。但是,我仍然无法得到我想要的结果。我得到的结果是没有海岸线或没有海岸线并且没有数据图(我使用了 pcolor)
我使用的数据是感兴趣区域的温度 netcdf 文件。因为数据本身没有边界信息,所以我想在这个图上画出海岸线。 我的代码如下:
Temp_plt = Temp[18,:,:]
Lon_plt = Lon[18,:,:]
Lat_plt = Lat[18,:,:]
lons = Lon_plt[0]
lats = Lat_plt[0]
lat_min = min(lats)
lat_max = max(lats)
lon_min = min(lons)
lon_max = max(lons)
Temp_c = Temp_plt-273.15
m = Basemap(
projection = 'merc',
llcrnrlat=lat_min, urcrnrlat=lat_max,
llcrnrlon=lon_min, urcrnrlon=lon_max,
resolution='h', area_thresh=0.01
)
m.drawcoastlines()
lon, lat= m.makegrid(Temp_plt.shape[1],Temp_plt.shape[0])
x1, y1 = m(lon,lat)
myPLT = m.pcolor(x1,y1,Temp_c)
因为我的经度 (Lon_plt) 和纬度 (Lat_plt) 是二维数组,所以我刚刚尝试了 pcolor 的这些值,而不是 makegrid 中的 x1 和 y1。但是,当时我看不到任何海岸线,只能看到温度 pcolor 图。从上面的代码中,我只能看到整个情节都是红色的。
任何想法或帮助将不胜感激。
谢谢,
艾萨克
【问题讨论】:
-
我认为您当前代码中的问题是您没有正确构建坐标网格。
Temp_plt.shape会给你数组的形状,而不是实际的坐标。所以使用Lon_plt和Lat_plt是要走的路。但在pcolor中使用它们之前,您必须将它们从纬度/经度转换为地图坐标:x1, y1 = m(Lon_plt, Lat_plt)。你试过了吗? -
谢谢 abudis,其实我发现了我的问题。这只是由于 pcolor 和 m.drawcoastline 之间的排序。 drawcoastline 应该在 pcolor 之后。再次感谢您的宝贵时间和帮助。
标签: python matplotlib matplotlib-basemap