Source code for issm.plotmodel

import numpy as  np
from issm.plotoptions import plotoptions
from issm.plotdoc import plotdoc
from issm.plot_manager import plot_manager
from math import ceil, sqrt

try:
	import pylab as p
	import matplotlib.pyplot as plt
	from mpl_toolkits.axes_grid1 import ImageGrid, AxesGrid
	from mpl_toolkits.mplot3d import Axes3D
except ImportError:
	print "could not import pylab, matplotlib has not been installed, no plotting capabilities enabled"

[docs]def plotmodel(md,*args): ''' at command prompt, type 'plotdoc()' for additional documentation ''' #First process options options=plotoptions(*args) #get number of subplots subplotwidth=ceil(sqrt(options.numberofplots)) #Get figure number and number of plots figurenumber=options.figurenumber numberofplots=options.numberofplots #get hold hold=options.list[0].getfieldvalue('hold',False) #if nrows and ncols specified, then bypass if options.list[0].exist('nrows'): nrows=options.list[0].getfieldvalue('nrows') nr=True else: nrows=np.ceil(numberofplots/subplotwidth) nr=False if options.list[0].exist('ncols'): ncols=options.list[0].getfieldvalue('ncols') nc=True else: ncols=int(subplotwidth) nc=False ncols=int(ncols) nrows=int(nrows) #check that nrows and ncols were given at the same time! if not nr==nc: raise StandardError('error: nrows and ncols need to be specified together, or not at all') #Go through plots if numberofplots: #if plt.fignum_exists(figurenumber): # plt.cla() #if figsize specified if options.list[0].exist('figsize'): figsize=options.list[0].getfieldvalue('figsize') fig=plt.figure(figurenumber,figsize=(figsize[0],figsize[1]))#,tight_layout=True) else: fig=plt.figure(figurenumber)#,tight_layout=True) fig.clf() backgroundcolor=options.list[0].getfieldvalue('backgroundcolor',(0.7,0.7,0.7)) fig.set_facecolor(backgroundcolor) translator={'on':'each', 'off':'None', 'one':'single'} # options needed to define plot grid plotnum=options.numberofplots direction=options.list[0].getfieldvalue('direction','row') # row,column axes_pad=options.list[0].getfieldvalue('axes_pad',0.25) add_all=options.list[0].getfieldvalue('add_all',True) # True,False share_all=options.list[0].getfieldvalue('share_all',True) # True,False label_mode=options.list[0].getfieldvalue('label_mode','L') # 1,L,all colorbar=options.list[0].getfieldvalue('colorbar','on') # on, off (single) cbar_mode=translator[colorbar] cbar_location=options.list[0].getfieldvalue('colorbarpos','right') # right,top cbar_size=options.list[0].getfieldvalue('colorbarsize','5%') cbar_pad=options.list[0].getfieldvalue('colorbarpad','2.5%') # None or % axgrid=ImageGrid(fig,111, nrows_ncols=(nrows,ncols), ngrids=plotnum, direction=direction, axes_pad=axes_pad, add_all=add_all, share_all=share_all, label_mode=label_mode, cbar_mode=cbar_mode, cbar_location=cbar_location, cbar_size=cbar_size, cbar_pad=cbar_pad) if cbar_mode=='None': for ax in axgrid.cbar_axes: fig._axstack.remove(ax) for i,ax in enumerate(axgrid.axes_all): plot_manager(options.list[i].getfieldvalue('model',md),options.list[i],fig,axgrid,i) fig.show() else: raise StandardError('plotmodel error message: no output data found.')