Source code for issm.expdisp

from issm.expread import expread
import numpy as  np
from matplotlib.path import Path
import matplotlib.patches as patches

[docs]def expdisp(ax,options): ''' plot the contents of a domain outline file This routine reads in an exp file and plots all of the x,y points/lines/patches 'ax' is a handle to the current plot axes, onto which we want to plot Usage: expdisp(ax,options) List of options passable to plotmodel: 'expdisp' : path (or list of paths) to the exp file to be plotted 'explinewidth' : linewidth 'explinestyle' : matplotlib linestyle string 'explinecolor' : matplotlib color string 'expfill' : (True/False) fill a closed contour 'expfillcolor' : Color for a filled contour, only used if expfill is True 'expfillalpha' : alpha transparency for filled contour All options should be passed as lists of length len(number of exp files passed) ''' filenames=options.getfieldvalue('expdisp') linewidth=options.getfieldvalue('explinewidth',[1]*len(filenames)) linestyle=options.getfieldvalue('explinestyle',['-']*len(filenames)) linecolor=options.getfieldvalue('explinecolor',['k']*len(filenames)) fill=options.getfieldvalue('expfill',[0]*len(filenames)) alpha=options.getfieldvalue('expfillalpha',[1]*len(filenames)) facecolor=options.getfieldvalue('expfillcolor',['r']*len(filenames)) unitmultiplier=options.getfieldvalue('unit',1) for i in xrange(len(filenames)): linestylei=linestyle[i] linecolori=linecolor[i] linewidthi=linewidth[i] alphai=alpha[i] facecolori=facecolor[i] filenamei=filenames[i] filli=fill[i] domain=expread(filenamei) for j in xrange(len(domain)): if domain[j]['nods']==1: ax.plot(domain[j]['x']*unitmultiplier,domain[j]['y']*unitmultiplier,'o',mec='k',mfc='r',ms=10) elif filli: verts=np.column_stack((domain[j]['x'],domain[j]['y'])) codes=[Path.MOVETO] + [Path.LINETO]*(len(domain[j]['x'])-2) + [Path.CLOSEPOLY] path=Path(verts, codes) patch=patches.PathPatch(path,facecolor=facecolori,edgecolor=linecolori,alpha=alphai, lw=linewidthi) ax.add_patch(patch) else: x=domain[j]['x'].tolist() # since expread returns a string representation of the arrays y=domain[j]['y'].tolist() ax.plot(x*unitmultiplier,y*unitmultiplier,ls=linestylei,lw=linewidthi,c=linecolori)