【问题标题】:Draw coastlines on the plots from data by basemap, matplotlib通过底图,matplotlib 从数据中绘制海岸线
【发布时间】: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_pltLat_plt 是要走的路。但在pcolor 中使用它们之前,您必须将它们从纬度/经度转换为地图坐标:x1, y1 = m(Lon_plt, Lat_plt)。你试过了吗?
  • 谢谢 abudis,其实我发现了我的问题。这只是由于 pcolor 和 m.drawcoastline 之间的排序。 drawcoastline 应该在 pcolor 之后。再次感谢您的宝贵时间和帮助。

标签: python matplotlib matplotlib-basemap


【解决方案1】:

如注释中所述,drawcoastlines() 函数应在 pcolor() 函数之后调用,以便线条覆盖颜色,而不是相反。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多