Source code for issm.applyoptions

import numpy as  np
from issm.cmaptools import truncate_colormap
from issm.plot_contour import plot_contour
from issm.plot_streamlines import plot_streamlines
from issm.expdisp import expdisp

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

[docs]def applyoptions(md,data,options,fig,axgrid,gridindex): ''' APPLYOPTIONS - apply options to current plot 'plotobj' is the object returned by the specific plot call used to render the data. This object is used for adding a colorbar. Usage: applyoptions(md,data,options) See also: PLOTMODEL, PARSE_OPTIONS ''' # get handle to current figure and axes instance #fig = p.gcf() ax= axgrid[gridindex] # {{{ font fontsize=options.getfieldvalue('fontsize',8) fontweight=options.getfieldvalue('fontweight','normal') fontfamily=options.getfieldvalue('fontfamily','sans-serif') font={'fontsize' :fontsize, 'fontweight' :fontweight, 'family' :fontfamily} # }}} # {{{ title if options.exist('title'): title=options.getfieldvalue('title') if options.exist('titlefontsize'): titlefontsize=options.getfieldvalue('titlefontsize') else: titlefontsize=fontsize if options.exist('titlefontweight'): titlefontweight=options.getfieldvalue('titlefontweight') else: titlefontweight=fontweight #title font titlefont=font.copy() titlefont['size']=titlefontsize titlefont['weight']=titlefontweight ax.set_title(title,**titlefont) # }}} # {{{ xlabel, ylabel, zlabel if options.exist('labelfontsize'): labelfontsize=options.getfieldvalue('labelfontsize') else: labelfontsize=fontsize if options.exist('labelfontweight'): labelfontweight=options.getfieldvalue('labelfontweight') else: labelfontweight=fontweight #font dict for labels labelfont=font.copy() labelfont['fontsize']=labelfontsize labelfont['fontweight']=labelfontweight if options.exist('xlabel'): ax.set_xlabel(options.getfieldvalue('xlabel'),**labelfont) if options.exist('ylabel'): ax.set_ylabel(options.getfieldvalue('ylabel'),**labelfont) if options.exist('zlabel'): ax.set_zlabel(options.getfieldvalue('zlabel'),**labelfont) # }}} # {{{ xticks, yticks, zticks (tick locations) if options.exist('xticks'): if options.exist('xticklabels'): xticklabels=options.getfieldvalue('xticklabels') ax.set_xticks(options.getfieldvalue('xticks'),xticklabels) else: ax.set_xticks(options.getfieldvalue('xticks')) if options.exist('yticks'): if options.exist('yticklabels'): yticklabels=options.getfieldvalue('yticklabels') ax.set_yticks(options.getfieldvalue('yticks'),yticklabels) else: ax.set_yticks(options.getfieldvalue('yticks')) if options.exist('zticks'): if options.exist('zticklabels'): zticklabels=options.getfieldvalue('zticklabels') ax.set_zticks(options.getfieldvalue('zticks'),zticklabels) else: ax.set_zticks(options.getfieldvalue('zticks')) # }}} # {{{ xticklabels,yticklabels,zticklabels if options.getfieldvalue('ticklabels','off')=='off' or options.getfieldvalue('ticklabels',0)==0: options.addfielddefault('xticklabels',[]) options.addfielddefault('yticklabels',[]) # TODO check if ax has a z-axis (e.g. is 3D) if options.exist('xticklabels'): xticklabels=options.getfieldvalue('xticklabels') ax.set_xticklabels(xticklabels) if options.exist('yticklabels'): yticklabels=options.getfieldvalue('yticklabels') ax.set_yticklabels(yticklabels) if options.exist('zticklabels'): zticklabels=options.getfieldvalue('zticklabels') ax.set_zticklabels(zticklabels) # }}} # {{{ ticklabel notation #ax.ticklabel_format(style='sci',scilimits=(0,0)) # }}} # {{{ ticklabelfontsize if options.exist('ticklabelfontsize'): for label in ax.get_xticklabels() + ax.get_yticklabels(): label.set_fontsize(options.getfieldvalue('ticklabelfontsize')) if int(md.mesh.dimension)==3: for label in ax.get_zticklabels(): label.set_fontsize(options.getfieldvalue('ticklabelfontsize')) # }}} # {{{ view TOFIX #if int(md.mesh.dimension) == 3 and options.exist('layer'): # #options.getfieldvalue('view') ? # ax=fig.gca(projection='3d') #plt.show() # }}} # {{{ axis if options.exist('axis'): if options.getfieldvalue('axis',True)=='off': ax.ticklabel_format(style='plain') p.setp(ax.get_xticklabels(), visible=False) p.setp(ax.get_yticklabels(), visible=False) # }}} # {{{ box if options.exist('box'): eval(options.getfieldvalue('box')) # }}} # {{{ xlim, ylim, zlim if options.exist('xlim'): ax.set_xlim(options.getfieldvalue('xlim')) if options.exist('ylim'): ax.set_ylim(options.getfieldvalue('ylim')) if options.exist('zlim'): ax.set_zlim(options.getfieldvalue('zlim')) # }}} # {{{ latlon TODO # }}} # {{{ Basinzoom TODO # }}} # {{{ ShowBasins TODO # }}} # {{{ clim if options.exist('clim'): lims=options.getfieldvalue('clim') assert len(lims)==2, 'error, clim should be passed as a list of length 2' elif options.exist('caxis'): lims=options.getfieldvalue('caxis') assert len(lims)==2, 'error, caxis should be passed as a list of length 2' options.addfielddefault('clim',lims) else: if len(data)>0: lims=[data.min(),data.max()] else: lims=[0,1] # }}} # {{{ shading TODO #if options.exist('shading'): # }}} # {{{ grid if options.exist('grid'): if 'on' in options.getfieldvalue('grid','on'): ax.grid() # }}} # {{{ colormap if options.exist('colornorm'): norm=options.getfieldvalue('colornorm') if options.exist('colormap'): cmap=options.getfieldvalue('colormap') cbar_extend=0 if options.exist('cmap_set_over'): cbar_extend+=1 if options.exist('cmap_set_under'): cbar_extend+=2 # }}} # {{{ contours if options.exist('contourlevels'): plot_contour(md,data,options,ax) # }}} # {{{ wrapping TODO # }}} # {{{ colorbar if options.getfieldvalue('colorbar',1)==1: if cbar_extend==0: extend='neither' elif cbar_extend==1: extend='max' elif cbar_extend==2: extend='min' elif cbar_extend==3: extend='both' cb = mpl.colorbar.ColorbarBase(ax.cax,cmap=cmap, norm=norm, extend=extend) if options.exist('alpha'): cb.set_alpha(options.getfieldvalue('alpha')) if options.exist('colorbarnumticks'): cb.locator=MaxNLocator(nbins=options.getfieldvalue('colorbarnumticks',5)) else: cb.locator=MaxNLocator(nbins=5) # default 5 ticks if options.exist('colorbartickspacing'): locs=np.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbartickspacing')) cb.set_ticks(locs) if options.exist('colorbarlines'): locs=np.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbarlines')) cb.add_lines(locs,['k' for i in range(len(locs))],np.ones_like(locs)) if options.exist('colorbarlineatvalue'): locs=options.getfieldvalue('colorbarlineatvalue') colors=options.getfieldvalue('colorbarlineatvaluecolor',['k' for i in range (len(locs))]) widths=options.getfieldvalue('colorbarlineatvaluewidth',np.ones_like(locs)) cb.add_lines(locs,colors,widths) if options.exist('colorbartitle'): if options.exist('colorbartitlepad'): cb.set_label(options.getfieldvalue('colorbartitle'), labelpad=options.getfieldvalue('colorbartitlepad'),fontsize=fontsize) else: cb.set_label(options.getfieldvalue('colorbartitle'),fontsize=fontsize) cb.ax.tick_params(labelsize=fontsize) cb.solids.set_rasterized(True) cb.update_ticks() cb.set_alpha(1) cb.draw_all() if options.exist('colorbarfontsize'): colorbarfontsize=options.getfieldvalue('colorbarfontsize') cb.ax.tick_params(labelsize=colorbarfontsize) # cb.set_ticks([0,-10]) # cb.set_ticklabels([-10,0,10]) if options.exist('colorbarticks'): colorbarticks=options.getfieldvalue('colorbarticks') cb.set_ticks(colorbarticks) plt.sca(ax) # return to original axes control # }}} # {{{ expdisp if options.exist('expdisp'): expdisp(ax,options) # }}} # {{{ area TODO # }}} # {{{ text if options.exist('text'): text=options.getfieldvalue('text') textx=options.getfieldvalue('textx') texty=options.getfieldvalue('texty') textcolor=options.getfieldvalue('textcolor') textweight=options.getfieldvalue('textweight') textrotation=options.getfieldvalue('textrotation') textfontsize=options.getfieldvalue('textfontsize') for label,x,y,size,color,weight,rotation in zip(text,textx,texty,textfontsize,textcolor,textweight,textrotation): ax.text(x,y,label,transform=ax.transAxes,fontsize=size,color=color,weight=weight,rotation=rotation) # }}} # {{{ north arrow TODO # }}} # {{{ scale ruler TODO # }}} # {{{ streamlines TOFIX if options.exist('streamlines'): plot_streamlines(md,options,ax)
# }}} # {{{ axis positions TODO # }}} # {{{ figure position TODO # }}} # {{{ axes position TODO # }}} # {{{ showregion TODO # }}} # {{{ flat edges of a partition TODO # }}} # {{{ scatter TODO # }}} # {{{ backgroundcolor TODO # }}} # {{{ figurebackgroundcolor TODO # }}} # {{{ lighting TODO # }}} # {{{ point cloud TODO # }}} # {{{ inset TODO # }}}