Source code for climaf.plot.plot_params

# -- Import the dictionnaries of plot params:
from climaf.site_settings import *

# --> Import the default CliMAF sets of plot params 
# --> for atmosphere
import atmos_plot_params
# --> for ocean
import ocean_plot_params
# --> for land
import land_plot_params

centerspecs=False
# --> Import the sets of plot parameters that are specific to the centers (CNRM or IPSL)
if atCNRM:
   import atmos_plot_params_CNRM as atmos_plot_params_centerspecs
   import ocean_plot_params_CNRM as ocean_plot_params_centerspecs
   import land_plot_params_CNRM as land_plot_params_centerspecs
   centerspecs=True
if atIPSL:
   import atmos_plot_params_IPSL as atmos_plot_params_centerspecs
   import ocean_plot_params_IPSL as ocean_plot_params_centerspecs
   import land_plot_params_IPSL as land_plot_params_centerspecs
   centerspecs=True

[docs]def plot_params(variable,context, custom_plot_params=None) : """Returns a dictionary of default plotting parameters (isolines, color palettes...) by variable and context, i.e. the full field (full_field), bias (bias), or model-model difference (model_model). This type of dictionary is typically passed to plot with "**". plot_params first loads a set of default CliMAF plotting parameters for both 'atmos' and 'ocean'. Then, it updates with sets of parameters that are specific to the centers (for instance CNRM or IPSL). Eventually, it can take a custom dictionary as an argument; it will use it to update the dictionary (i.e. override matching entries). Such a dictionnary would be build such as the example at :download:`../climaf/plot/atmos_plot_params.py` Args: variable (string) : variable name; The name of the geophysical variable to plot context (string) : among 'full_field', 'bias', 'model_model'; The kind of plot custom_plot_params : a user dictionnary that will override CliMAF default values Returns : a python dictionary with plotting parameters to be used by plot() Call example :: >>> var = 'pr' >>> climato_dat = time_average(ds(variable=var, project='CMIP5', ...)) # here, the annual mean climatology of a CMIP5 dataset for variable var >>> climato_ref = time_average(ds(variable=var, project='ref_climatos',...)) # the annual mean climatology of a reference dataset for variable var >>> bias = diff_regrid(climato_dat,climato_ref) # We compute the bias map with diff_regrid() >>> niceplot_params=**plot_params(var,'full_field') >>> climato_plot = plot(climato_dat, nice_plot_params) >>> bias_plot = plot(bias, **plot_params(var,'bias')) >>> my_custom_params = {'pr':{'bias':{'colors':'-10 -5 -2 -0.5 -0.2 -0.1 0 0.1 0.2 0.5 1 2 5 10'}}} >>> bias_plot_custom_params = plot(bias, **plot_params(var,'bias',custom_plot_params=my_custom_params) >>> # How to import custom params stored in a my_custom_plot_param_file.py file in the working directory >>> from my_custom_plot_param_file import dict_plot_params as my_custom_params >>> bias_plot_custom_params = plot(bias, **plot_params(var,'bias',custom_plot_params=my_custom_params) """ defaults = { 'contours' : 1 , 'color' :'temp_19lev', } per_variable = {} # --> Adding the default plot params per_variable.update(atmos_plot_params.dict_plot_params) per_variable.update(ocean_plot_params.dict_plot_params) per_variable.update(land_plot_params.dict_plot_params) if centerspecs : # --> Then, add the plot params specific to the centers per_variable.update(atmos_plot_params_centerspecs.dict_plot_params) per_variable.update(ocean_plot_params_centerspecs.dict_plot_params) per_variable.update(land_plot_params_centerspecs.dict_plot_params) # --> If needed, adding a custom dictionnary of plot params if custom_plot_params: per_variable.update(custom_plot_params) # rep=defaults.copy() # -- If the variable name is in the list of variables: if variable in per_variable : var_entry=per_variable[variable] for cont in [ 'default', context ] : if cont in var_entry : rep.update(var_entry[cont]) else: print 'Message from plot_params: '+variable+' is not in the list of defined plot parameters' # -- if not, we try to split tmp_variable = str.split(variable,'_')[0] if tmp_variable in per_variable : print 'We will use the plot parameters of '+tmp_variable var_entry=per_variable[tmp_variable] for cont in [ 'default', context ] : if cont in var_entry : rep.update(var_entry[cont]) else: print 'Message from plot_params: '+variable+' is not in the list of defined plot parameters' print 'We will use the default plot parameters.' return rep
[docs]def hovm_params(SSTbox_name) : """Returns a dictionary with domain definition of SST/climate specified box for plotting Hovmoller diagrams This type of dictionary is typically passed to 'hovm' operator with "**". Arg: SSTbox_name (string) : SST/climate box name. The available boxes are: 'NINO3-4', 'NINO1-2', 'NINO3', 'NINO4', 'GRL', 'NATL', 'SAT' and 'TPA'. Returns : a python dictionary with domain parameters ('latS', 'latN', 'lonW', 'lonE') to be used by hovm() Call example :: >>> tas=ds(project='example', simulation='AMIPV6ALB2G', variable='tas', frequency='monthly', period='1980') >>> # We plot a Hovmoller diagram (t,y) at longitude close to 10 for 'NINO1-2' domain >>> hov_diag=hovm(tas, mean_axis='Point', xpoint=10., title='Temperature', **hovm_params('NINO1-2')) >>> cfile(hov_diag) """ SST_boxes = { 'NINO3-4' : {'latS': ' -5.', 'latN': '5.' , 'lonW': '-170.', 'lonE': '-120.'}, 'NINO1-2' : {'latS': '-10.', 'latN': '0.' , 'lonW': '-90.' , 'lonE': '-80.' }, 'NINO3' : {'latS': '-5.' , 'latN': '5.' , 'lonW': '-150.', 'lonE': '-90.' }, 'NINO4' : {'latS': '-5.' , 'latN': '5.' , 'lonW': '-160.', 'lonE': '-150.'}, 'GRL' : {'latS': '40.' , 'latN': '60.', 'lonW': '-60.' , 'lonE': '-30.' }, 'NATL' : {'latS': '20.' , 'latN': '85.', 'lonW': '-90.' , 'lonE': '30.' }, 'SAT' : {'latS': '6.' , 'latN': '18.', 'lonW': '-30.' , 'lonE': '10.' }, 'TPA' : {'latS': '20.' , 'latN': '85.', 'lonW': '-90.' , 'lonE': '30.' }, } if SSTbox_name in SST_boxes : return (SST_boxes[SSTbox_name])