In [6]:
    
import Ngl,Nio
#-- define variables
fname  = "/Users/k204045/NCL/general/data/new_data/rectilinear_grid_2D.nc" #-- data file name
#-- open file and read variables
f      =  Nio.open_file(fname,"r")             #-- open data file
temp   =  f.variables["tsurf"][0,::-1,:]       #-- first time step, reverse latitude
lat    =  f.variables["lat"][::-1]             #-- reverse latitudes
lon    =  f.variables["lon"][:]                #-- all longitudes
    
Add cyclic data. Set minimum and maximum contour values although the interval.
In [7]:
    
tempac =  Ngl.add_cyclic(temp[:,:])
minval =  250.                                 #-- minimum contour level
maxval =  315                                  #-- maximum contour level
inc    =    5.                                 #-- contour level spacing
ncn    = (maxval-minval)/inc + 1               #-- number of contour levels.
    
Open a workstation, here x11 window.
In [8]:
    
wkres                  =  Ngl.Resources()      #-- generate an res object for workstation
wkres.wkColorMap       = "rainbow"             #-- choose colormap
wks_type               = "png"                 #-- graphics output type
wks                    =  Ngl.open_wks(wks_type,"plot_contour_PyNGL",wkres)  #-- open workstation
    
Set resources.
In [9]:
    
res                    =  Ngl.Resources()      #-- generate an resource object for plot
if hasattr(f.variables["tsurf"],"long_name"):
   res.tiMainString = f.variables["tsurf"].long_name  #-- set main title
res.vpXF                  =  0.1               #-- start x-position of viewport
res.vpYF                  =  0.9               #-- start y-position of viewport
res.vpWidthF              =  0.7               #-- width of viewport
res.vpHeightF             =  0.7               #-- height of viewport
res.cnFillOn              =  True              #-- turn on contour fill.
res.cnLinesOn             =  False             #-- turn off contour lines
res.cnLineLabelsOn        =  False             #-- turn off line labels.
res.cnInfoLabelOn         =  False             #-- turn off info label.
res.cnLevelSelectionMode  = "ManualLevels"     #-- select manual level selection mode
res.cnMinLevelValF        =  minval            #-- minimum contour value
res.cnMaxLevelValF        =  maxval            #-- maximum contour value
res.cnLevelSpacingF       =  inc               #-- contour increment
res.mpGridSpacingF        =  30.                #-- map grid spacing
res.sfXCStartV            =  float(min(lon))   #-- x-axis location of 1st element lon
res.sfXCEndV              =  float(max(lon))   #-- x-axis location of last element lon
res.sfYCStartV            =  float(min(lat))   #-- y-axis location of 1st element lat
res.sfYCEndV              =  float(max(lat))   #-- y-axis location of last element lat
res.pmLabelBarDisplayMode = "Always"           #-- turn on the label bar.
res.lbOrientation         = "Horizontal"       #-- labelbar orientation
    
Draw the plot.
In [10]:
    
map = Ngl.contour_map(wks,tempac,res)          #-- draw contours over a map.
#-- end
Ngl.delete_wks(wks)                            #-- this need to be done to close the graphics output file
Ngl.end()
    
Show the plot in this notebook.
In [11]:
    
from IPython.display import Image
Image(filename='plot_contour_PyNGL.png')
    
    Out[11]: