source: trunk/MESOSCALE/PLOT/PYTHON/pywrf.example.r39/viz/laps_sigma.py @ 187

Last change on this file since 187 was 183, checked in by aslmd, 14 years ago

MESOSCALE: PYTHON: added pywrf r39 to act as a reference for futher developments

File size: 2.3 KB
Line 
1from viz.utils import peek
2from viz.utils import cardinal_2_month
3import pylab as p
4import matplotlib.numerix.ma as ma
5import numpy as n
6from string import zfill
7from matplotlib.toolkits.basemap import Basemap
8
9a_small_number = 1e-8
10
11def set_default_basemap(lon, lat):
12    map = Basemap(
13      llcrnrlon=lon.min() - 0.5,
14      llcrnrlat=lat.min() - 0.5,
15      urcrnrlon=lon.max() + 0.5,
16      urcrnrlat=lat.max() + 0.5,
17      resolution='l',
18      projection='cyl',
19      lon_0=lon.min() + (lon.max()-lon.min())/2.,
20      lat_0=lat.min() + (lat.max()-lat.min())/2.
21      )
22    return map
23
24def plot_temp(file_name, cntr_lvl=None, save_frames=False):
25    file, vars = peek(file_name, show_vars=False)
26    lon = vars['lon'].get_value()
27    lat = vars['lat'].get_value()
28    air_temp_var = vars['air_temp']
29    air_temp = air_temp_var.get_value()[0]
30    lvl = vars['lvl'].get_value()
31    valid_date = str(vars['valid_date'].get_value()[0])
32    valid_time = zfill(str(vars['valid_time'].get_value()[0]), 4)
33    valid_when = valid_date[6:] + ' ' \
34      + cardinal_2_month(int(valid_date[4:6])) + ' ' \
35      + valid_date[0:4] \
36      + ' ' + valid_time[:2] + ':' \
37      + valid_time[2:] + ' UTC'
38    if save_frames:
39        frame_number = 0
40    m = set_default_basemap(lon,lat)
41    # must plot using 2d lon and lat
42    LON, LAT = p.meshgrid(lon,lat)
43    for lvl_idx in range(5):
44    #for lvl_idx in range(len(lvl)):
45        p.figure()
46        if cntr_lvl is not None:
47            m.contourf(LON,LAT,air_temp[lvl_idx], cntr_lvl)
48        else:
49            m.contourf(LON,LAT,air_temp[lvl_idx])
50        m.drawcoastlines()
51        m.drawmeridians(n.array(n.arange(lon.min(), lon.max() + a_small_number, 15.)), labels=[1,0,0,1])
52        m.drawparallels(n.array(n.arange(lat.min(), lat.max() + a_small_number, 15.)), labels=[1,0,0,1])
53        p.colorbar(orientation='horizontal', shrink=0.7, fraction=0.02, pad=0.07, aspect=50)
54        title_string = 'Air temperature (K) valid at ' \
55          + '\n' + valid_when + ' ' \
56          + str(round(lvl[lvl_idx],4)) + ' sigma' \
57          + ' from LAPS'
58        p.title(title_string)
59        if save_frames:
60            p.savefig('frames/frame_' + zfill(str(frame_number),3) +'_air_temp_' + str(lvl[lvl_idx]) + '_sigma.png')
61            frame_number += 1
62    return 
63
64
Note: See TracBrowser for help on using the repository browser.