Source code for issm.checkplotoptions

import numpy as  np

[docs]def checkplotoptions(md,options): ''' CHECKPLOTOPTIONS - build a structure that holds all plot options Usage: options=checkplotoptions(md,options) See also: PLOTMODEL NOTE: not fully implemented yet ''' # {{{ units if options.exist('unit'): if 'km' in options.getfieldvalue('unit','km'): options.changefieldvalue('unit',10**-3) elif '100km' in options.getfieldvalue('unit','100km'): options.changefieldvalue('unit',10**-5) # }}} # {{{ density if options.exist('density'): density=options.getfieldvalue('density') options.changefieldvalue('density',abs(ceil(density))) # }}} # {{{ show section if options.exist('showsection'): if 'on' in options.getfieldvalue('showsection','on'): options.changefieldvalue('showsection',4) # }}} # {{{ smooth values if options.exist('smooth'): if 'on' in options.getfieldvalue('smooth','on'): options.changefieldvalue('smooth',0) # }}} # {{{ contouronly values if options.exist('contouronly'): if 'on' in options.getfieldvalue('contouronly','on'): options.changefieldvalue('contouronly',1) # }}} # {{{ colorbar if options.exist('colorbar'): if 'on' in options.getfieldvalue('colorbar','on'): options.changefieldvalue('colorbar',1) elif 'off' in options.getfieldvalue('colorbar','off'): options.changefieldvalue('colorbar',0) # }}} # {{{ text if options.exist('text'): # text values (coerce to list for consistent functionality) textlist=[] text=options.getfieldvalue('text','default text') textlist.extend([text] if isinstance(text,str) else text) numtext=len(textlist) # text position textpos=options.getfieldvalue('textposition',[0.5,0.5]) if not isinstance(textpos,list): raise Exception('textposition should be passed as a list') if any(isinstance(i,list) for i in textpos): textx=[item[0] for item in textpos] texty=[item[1] for item in textpos] else: textx=[textpos[0]] texty=[textpos[1]] if len(textx)!=numtext or len(texty)!=numtext: raise Exception('textposition should contain one list of x,y vertices for every text instance') # font size if options.exist('textfontsize'): textfontsize=options.getfieldvalue('textfontsize',12) sizelist=[] sizelist.extend(textsize if isinstance(textfontsize,list) else [textfontsize]) else: sizelist=[12] if len(sizelist)==1: sizelist=np.tile(sizelist,numtext) # font color if options.exist('textcolor'): textcolor=options.getfieldvalue('textcolor','k') colorlist=[] colorlist.extend(textcolor if isinstance(textcolor,list) else [textcolor]) else: colorlist=['k'] if len(colorlist)==1: colorlist=np.tile(colorlist,numtext) # textweight if options.exist('textweight'): textweight=options.getfieldvalue('textweight') weightlist=[] weightlist.extend(textweight if isinstance(textweight,list) else [textweight]) else: weightlist=['normal'] if len(weightlist)==1: weightlist=np.tile(weightlist,numtext) # text rotation if options.exist('textrotation'): textrotation=options.getfieldvalue('textrotation',0) rotationlist=[] rotationlist.extend(textrotation if isinstance(textrotation,list) else [textrotation]) else: rotationlist=[0] if len(rotationlist)==1: rotationlist=np.tile(rotationlist,numtext) options.changefieldvalue('text',textlist) options.addfield('textx',textx) options.addfield('texty',texty) options.changefieldvalue('textfontsize',sizelist) options.changefieldvalue('textcolor',colorlist) options.changefieldvalue('textweight',weightlist) options.changefieldvalue('textrotation',rotationlist) # }}} # {{{ expdisp expdispvaluesarray=[] expstylevaluesarray=[] expstylevalues=[] if options.exist('expstyle'): expstylevalues=options.getfieldvalue('expstyle') if type(expstylevalues)==str: expstylevalues=[expstylevalues] if options.exist('expdisp'): expdispvalues=options.getfieldvalue('expdisp') if type(expdispvalues)==str: expdispvalues=[expdispvalues] for i in np.arange(len(expdispvalues)): expdispvaluesarray.append(expdispvalues[i]) if len(expstylevalues)>i: expstylevaluesarray.append(expstylevalues[i]) else: expstylevaluesarray.append('-k') options.changefieldvalue('expstyle',expstylevaluesarray) options.changefieldvalue('expdisp',expdispvaluesarray) # }}} # {{{ latlonnumbering if options.exist('latlonclick'): if 'on' in options.getfieldvalue('latlonclick','on'): options.changefieldvalue('latlonclick',1) # }}} # {{{ northarrow if options.exist('northarrow'): if 'on' in options.getfieldvalue('northarrow','on'): #default values Lx=max(md.mesh.x)-min(md.mesh.x) Ly=max(md.mesh.y)-min(md.mesh.y) options.changefieldvalue('northarrow',[min(md.mesh.x)+1./6.*Lx, min(md.mesh.y)+5./6.*Ly, 1./15.*Ly, 0.25, 1./250.*Ly]) # }}} # {{{ scale ruler if options.exist('scaleruler'): if 'on' in options.getfieldvalue('scaleruler','off'): Lx=max(md.mesh.x)-min(md.mesh.x) Ly=max(md.mesh.y)-min(md.mesh.y) options.changefieldvalue('scaleruler',[min(md.mesh.x)+6./8.*Lx, min(md.mesh.y)+1./10.*Ly, 10**(np.ceil(np.log10(Lx)))/5, np.floor(Lx/100), 5]) # }}} # {{{ log scale if options.exist('log'): options.changefieldvalue('cutoff',np.log10(options.getfieldvalue('cutoff',1.5))/np.log10(options.getfieldvalue('log'))) # }}} return options