【问题标题】:Rotating map plot using basemap in python在python中使用底图旋转地图图
【发布时间】:2016-11-14 04:05:06
【问题描述】:

我正在尝试使用 Basemap 绘制来自 netcdf 的数据,但我想由于纬度指数是倒置的,我得到的地图是颠倒的。我应该如何解决这个问题?谢谢!

fnc = Dataset(ncfile, 'r')
lat = fnc.variables['latitude'][:]
lon = fnc.variables['longitude'][:]
level = fnc.variables['level']
mydata = fnc.variables['Data'][:]
imgplot = plt.imshow(mydata[0, 0, :, :])
imgplot.set_cmap('RdYlGn')
plt.colorbar()
plt.show

m = Basemap(llcrnrlon = -180, llcrnrlat = -90, urcrnrlon = 180, urcrnrlat= +90, resolution = 'l', epsg=4326)
x, y = m(lon, lat)
im = m.imshow(mydata[0, 0, :, :])
m.drawcoastlines()
plt.show()

【问题讨论】:

    标签: python gis netcdf matplotlib-basemap netcdf4


    【解决方案1】:

    首先,请注意,您当前正在阅读Data 的一维:

    mydata = fnc.variables['Data'][:]
    

    但稍后您尝试提取它的切片,就好像它是 4D 一样:

    imgplot = plt.imshow(mydata[0, 0, :, :])
    

    所以,您需要读入Data 的所有 4 个维度(可能是时间、级别、纬度、经度?):

    mydata = fnc.variables['Data'][:,:,:,:]
    

    然后使用::-1 语法反转纬度:

    imgplot.plotimshow(mydata[0, 0, ::-1, :])
    

    【讨论】:

    【解决方案2】:

    我认为绘图命令需要知道地图坐标 x,y。尝试替换

    im = m.imshow(mydata[0, 0, :, :])
    

    m.pcolormesh(x,y,mydata[0,0,:,:])
    

    它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 2019-08-31
      • 1970-01-01
      • 2013-03-27
      相关资源
      最近更新 更多