2016-06-24 2 views
1

Это моя первая попытка построить с использованием matplotlib. Я пытаюсь построить файл netCDF по высоте геопотенциала с использованием matplotlib, и я получаю пустое изображение. Нет никаких береговых линий или чего-то еще. Просто пустой экран. Мои данные варьируются от 5 N до 40 N и от 65 E до 100 E.Невозможно отобразить данные с использованием matplotlib

Я распечатал значения lat, lon и hgt, и все они действительны.

Вот мой код -

nc_f = './hgt_500_2014_12_5_00Z.nc' # Your filename 
nc_fid = Dataset(nc_f, 'r') # Dataset is the class behavior to open the file 

lats = nc_fid.variables['lat'][:] 
lons = nc_fid.variables['lon'][:] 
time = nc_fid.variables['time'][:] 
hgt = nc_fid.variables['hgt'][:] 


hgt_units = nc_fid.variables['hgt'].units 

nc_fid.close() 

lon_0 = lons.mean() 
lat_0 = lats.mean() 


m = Basemap(width=5000000,height=3500000, 
     resolution='l',projection='stere',\ 
     lat_ts=40,lat_0=lat_0,lon_0=lon_0) 

lon, lat = np.meshgrid(lons, lats) 
xi, yi = m(lon, lat) 

cs = m.pcolor(xi,yi,np.squeeze(hgt)) 


m.drawparallels(np.arange(5., 40., 5.), labels=[1,0,0,0], fontsize=10) 
m.drawmeridians(np.arange(65., 100., 5.), labels=[0,0,0,1], fontsize=10) 

m.drawcoastlines() 
m.drawstates() 
m.drawcountries() 

cbar = m.colorbar(cs, location='bottom', pad="10%") 
cbar.set_label(hgt_units) 

plt.title('Geopotential Height') 

plt.show()   

Я также получаю эту ошибку, когда я бегу Python

Traceback (most recent call last): 
File "/usr/local/lib/python3.4/dist-packages/matplotlib-1.5.0-py3.4-linux-x86_64.egg/matplotlib/backends/backend_gtk3agg.py", line 69, in on_draw_event 
buf, cairo.FORMAT_ARGB32, width, height) 
NotImplementedError: Surface.create_for_data: Not Implemented yet. 
Traceback (most recent call last): 
File "/usr/local/lib/python3.4/dist-packages/matplotlib-1.5.0-py3.4-linux-x86_64.egg/matplotlib/backends/backend_gtk3agg.py", line 69, in on_draw_event 
buf, cairo.FORMAT_ARGB32, width, height) 
NotImplementedError: Surface.create_for_data: Not Implemented yet. 

ответ

1
  1. Вы можете написать так же, как lons = nc_fid.variables['lon'].

  2. Проверьте значения Lat-Lon они должны прикрывать область от 5 Н до 40 Н и от 65 Е до 100 Е.

  3. drawstates() не работает для вашего региона эта команда начертить границы состояний для НАС.

  4. Проверить другие GUI движки: TkAgg, WX, QTAgg, QT4Agg как:

    import matplotlib

    matplotlib.use('Agg')

  5. Это может быть проблема с Каиром библиотеки

+0

100% правый ! Я только что установил каир и получил его на работу !!! Большое спасибо ! – gansub

Смежные вопросы