plotters module of the psy-transect psyplot plugin

Formatoption classes:

AlternativeTransectXCoord(key[, plotter, ...])

Specify what to use for the x-axis

Transect(key[, plotter, index_in_list, ...])

Transect within a 2D plot

TransectMethod(key[, plotter, ...])

Specify the method how to select the transect.

TransectResolution(key[, plotter, ...])

Expand the transect to a minimum resolution.

VTransform(key[, plotter, index_in_list, ...])

Specify the coordinate system of the data

VerticalTransectTranspose(*args, **kwargs)

Plotter classes:

VerticalMapTransectPlotter(*args, **kwargs)

VerticalTransectPlotter(*args, **kwargs)

class psy_transect.plotters.AlternativeTransectXCoord(key, plotter=None, index_in_list=None, additional_children=[], additional_dependencies=[], **kwargs)

Bases: Formatoption

Specify what to use for the x-axis

Possible types

'index'

Will use the index of the cell along the transect

'distance'

Will use the euclidean distance of the start of the transect

'haversine'

Will use the haversine distance in kilometers of the start of the transect. This can only be used if the x- and y-coordinates have units in 'degrees_east' and 'degrees_north', or 'radian' respectively.

'x'

Will use the x-coordinate of the initial array

'y'

Will use the y-coordinate of the initial array

Attributes:

dependencies

list of str.

name

str.

priority

int.

transect

transect Formatoption instance in the plotter

Methods:

update(value)

Method that is call to update the formatoption on the axes

dependencies = ['transect']

list of str. List of formatoptions that force an update of this formatoption if they are updated.

name = 'Select the x-coordinate'

str. A bit more verbose name than the formatoption key to be included in the gui. If None, the key is used in the gui

priority = 30

int. Priority value of the the formatoption determining when the formatoption is updated.

  • 10: at the end (for labels, etc.)

  • 20: before the plotting (e.g. for colormaps, etc.)

  • 30: before loading the data (e.g. for lonlatbox)

property transect

transect Formatoption instance in the plotter

update(value)

Method that is call to update the formatoption on the axes

Parameters:

value – Value to update

class psy_transect.plotters.Transect(key, plotter=None, index_in_list=None, additional_children=[], additional_dependencies=[], **kwargs)

Bases: Formatoption

Transect within a 2D plot

This formatoption takes a list of x-y tuples, the so-called transect, and extracts the raw data along this path.

Possible types

list of x-y tuples

The point coordinates of the transect.

None

Uses up to the first 100 cells

Attributes:

data_dependent

bool or a callable.

dependencies

list of str.

name

str.

priority

int.

transect_method

transect_method Formatoption instance in the plotter

transect_resolution

transect_resolution Formatoption instance in the plotter

Methods:

diff(value)

Checks whether the given value differs from what is currently set

update(value)

Method that is call to update the formatoption on the axes

data_dependent = True

bool or a callable. This attribute indicates whether this Formatoption depends on the data and should be updated if the data changes. If it is a callable, it must accept one argument: the new data. (Note: This is automatically set to True for plot formatoptions)

dependencies = ['transect_method', 'transect_resolution']

list of str. List of formatoptions that force an update of this formatoption if they are updated.

diff(value)

Checks whether the given value differs from what is currently set

Parameters:

value – A possible value to set (make sure that it has been validate via the validate attribute before)

Returns:

True if the value differs from what is currently set

Return type:

bool

name = 'Transect within the raw data'

str. A bit more verbose name than the formatoption key to be included in the gui. If None, the key is used in the gui

priority = 30

int. Priority value of the the formatoption determining when the formatoption is updated.

  • 10: at the end (for labels, etc.)

  • 20: before the plotting (e.g. for colormaps, etc.)

  • 30: before loading the data (e.g. for lonlatbox)

property transect_method

transect_method Formatoption instance in the plotter

property transect_resolution

transect_resolution Formatoption instance in the plotter

update(value)

Method that is call to update the formatoption on the axes

Parameters:

value – Value to update

class psy_transect.plotters.TransectMethod(key, plotter=None, index_in_list=None, additional_children=[], additional_dependencies=[], **kwargs)

Bases: Formatoption

Specify the method how to select the transect.

This formatoption specifies how the transect is selected.

Possible types

‘nearest’

Take the nearest grid point along the transect. This will not interpolate and return a unique list of grid points from the raw data.

‘nearest_exact’

Take the nearest grid point, one point from the raw data per point in the transect

‘inverse_distance_weighting’

Interpolation of the value at the requested position by inverse distance weighting method. See pyinterp.RTree.inverse_distance_weighting()

str

Any other method suitable for the rbf parameter of the pyinterp.RTree.radial_basis_function() method

Attributes:

name

str.

priority

int.

Methods:

update(value)

Method that is call to update the formatoption on the axes

name = 'Method for getting the data along the transect'

str. A bit more verbose name than the formatoption key to be included in the gui. If None, the key is used in the gui

priority = 30

int. Priority value of the the formatoption determining when the formatoption is updated.

  • 10: at the end (for labels, etc.)

  • 20: before the plotting (e.g. for colormaps, etc.)

  • 30: before loading the data (e.g. for lonlatbox)

update(value)

Method that is call to update the formatoption on the axes

Parameters:

value – Value to update

class psy_transect.plotters.TransectResolution(key, plotter=None, index_in_list=None, additional_children=[], additional_dependencies=[], **kwargs)

Bases: Formatoption

Expand the transect to a minimum resolution.

This formatoption expands the segments of the transect to fullfil a minimum resolution. Everything but False will expand the segments of the transect to fullfil the minimum resolution.

This formatoption is of particular importance if you want to use the vertical transect plotter in combination with a map.

Possible types

False

Do not make any changes to the provided transect but take it as it is

True or 'auto'

The default value estimates the resolution of the underlying spatial data and estimates it’s minimum resolution. This won’t not work for unstructured data!

float

Specify the spatial resolution directly

Attributes:

estimated_resolution

Estimate the resolution of the input data.

name

str.

Methods:

expand_path(path)

Expand the path segments to match the datas resolution.

expand_path_to_resolution(path, resolution)

Expand a given set of points to match the given resolution.

update(value)

Method that is call to update the formatoption on the axes

property estimated_resolution: float | None

Estimate the resolution of the input data.

expand_path(path: ndarray) ndarray

Expand the path segments to match the datas resolution.

Parameters:

path (np.ndarray of shape (N, 2)) – The x-y-coordinates of the path segments

Returns:

An array with M>=N where each segment in the path is smaller. than the minimum resolution.

Return type:

np.ndarray of shape (M, 2)

static expand_path_to_resolution(path: ndarray, resolution: float) ndarray

Expand a given set of points to match the given resolution.

Parameters:
  • path (np.ndarray of shape (N, 2)) – The x-y-coordinates of the path segments

  • resolution (float) – The minimum resolution that shall be used to expand the path

Returns:

An array with M>=N where each segment in the path is smaller. than the minimum resolution.

Return type:

np.ndarray of shape (M, 2)

name = 'Minimum resolution of the transect'

str. A bit more verbose name than the formatoption key to be included in the gui. If None, the key is used in the gui

update(value)

Method that is call to update the formatoption on the axes

Parameters:

value – Value to update

class psy_transect.plotters.VTransform(key, plotter=None, index_in_list=None, additional_children=[], additional_dependencies=[], **kwargs)

Bases: Transform

Specify the coordinate system of the data

This formatoption defines the coordinate system of the data (usually we expect a simple latitude longitude coordinate system)

Possible types

cartopy.crs.CRS

A cartopy projection instance (e.g. cartopy.crs.PlateCarree)

str

A string specifies the projection instance to use. The centered longitude and latitude are determined by the clon and clat formatoptions. Possible strings are (each standing for the specified projection)

cf

try to decode the CF-conventions

cyl

cartopy.crs.PlateCarree

robin

cartopy.crs.Robinson

moll

cartopy.crs.Mollweide

geo

cartopy.crs.Geostationary

northpole

cartopy.crs.NorthPolarStereo

southpole

cartopy.crs.SouthPolarStereo

ortho

cartopy.crs.Orthographic

stereo

cartopy.crs.Stereographic

near

cartopy.crs.NearsidePerspective

rotated

cartopy.crs.RotatedPole

The special case 'cf' tries to decode the CF-conventions in the data. If this is not possible, we assume a standard lat-lon projection ('cyl')

Attributes:

connections

list of str.

connections: List[str] = []

list of str. Connections to other formatoptions that are (different from dependencies and children) not important for the update process

class psy_transect.plotters.VerticalMapTransectPlotter(*args, **kwargs)

Bases: VerticalTransectPlotter

Axes formatoptions:

axiscolor

Color the x- and y-axes

background

The background color for the matplotlib axes.

grid

Display the grid

tight

Automatically adjust the plots.

transpose

xlim

Set the x-axis limits

ylim

Set the y-axis limits

Color coding formatoptions:

bounds

Specify the boundaries of the colorbar

cbar

Specify the position of the colorbars

cbarspacing

Specify the spacing of the bounds in the colorbar

cmap

Specify the color map

ctickprops

Specify the font properties of the colorbar ticklabels

cticksize

Specify the font size of the colorbar ticklabels

ctickweight

Specify the fontweight of the colorbar ticklabels

extend

Draw arrows at the side of the colorbar

levels

The levels for the contour plot

miss_color

Set the color for missing values

Label formatoptions:

clabel

Show the colorbar label

clabelprops

Properties of the Colorbar label

clabelsize

Set the size of the Colorbar label

clabelweight

Set the fontweight of the Colorbar label

figtitle

Plot a figure title

figtitleprops

Properties of the figure title

figtitlesize

Set the size of the figure title

figtitleweight

Set the fontweight of the figure title

labelprops

Set the font properties of both, x- and y-label

labelsize

Set the size of both, x- and y-label

labelweight

Set the font size of both, x- and y-label

text

Add text anywhere on the plot

title

Show the title

titleprops

Properties of the title

titlesize

Set the size of the title

titleweight

Set the fontweight of the title

xlabel

Set the x-axis label

ylabel

Set the y-axis label

Miscallaneous formatoptions:

coord

Specify what to use for the x-axis

datagrid

Show the grid of the data

interp_bounds

Interpolate grid cell boundaries for 2D plots

mask_datagrid

Mask the datagrid where the array is NaN

sym_lims

Make x- and y-axis symmetric

ticksize

Change the ticksize of the ticklabels

tickweight

Change the fontweight of the ticks

transect

Transect within a 2D plot

transect_method

Specify the method how to select the transect.

transect_resolution

Expand the transect to a minimum resolution.

transform

Specify the coordinate system of the data

Axis tick formatoptions:

cticklabels

Specify the colorbar ticklabels

cticks

Specify the tick locations of the colorbar

xrotation

Rotate the x-axis ticks

xticklabels

Modify the x-axis ticklabels

xtickprops

Specify the x-axis tick parameters

xticks

Modify the x-axis ticks

yrotation

Rotate the y-axis ticks

yticklabels

Modify the y-axis ticklabels

ytickprops

Specify the y-axis tick parameters

yticks

Modify the y-axis ticks

Masking formatoptions:

mask

Mask the data where a certain condition is True

maskbetween

Mask data points between two numbers

maskgeq

Mask data points greater than or equal to a number

maskgreater

Mask data points greater than a number

maskleq

Mask data points smaller than or equal to a number

maskless

Mask data points smaller than a number

Plot formatoptions:

plot

Specify the plotting method

Post processing formatoptions:

post

Apply your own postprocessing script

post_timing

Determine when to run the post formatoption

Attributes:

selectors

axiscolor

Color the x- and y-axes

This formatoption colors the left, right, bottom and top axis bar.

Possible types

dict

Keys may be one of {‘right’, ‘left’, ‘bottom’, ‘top’}, the values can be any valid color or None.

Notes

The following color abbreviations are supported:

character

color

‘b’

blue

‘g’

green

‘r’

red

‘c’

cyan

‘m’

magenta

‘y’

yellow

‘k’

black

‘w’

white

In addition, you can specify colors in many weird and wonderful ways, including full names ('green'), hex strings ('#008000'), RGB or RGBA tuples ((0,1,0,1)) or grayscale intensities as a string ('0.8').

background

The background color for the matplotlib axes.

Possible types

‘rc’

to use matplotlibs rc params

None

to use a transparent color

color

Any possible matplotlib color

bounds

Specify the boundaries of the colorbar

Possible types

None

make no normalization

numeric array

specifies the ticks manually

str or list [str, …]

A list of the below mentioned values of the mapping like [method, N, percmin, percmax, vmin, vmax], where only the first one is absolutely necessary

dict

Automatically determine the ticks corresponding to the data. The mapping can have the following keys, but only method is not optional.

N

An integer describing the number of boundaries (or ticks per power of ten, see log and symlog above)

percmin

The percentile to use for the minimum (by default, 0, i.e. the minimum of the array)

percmax

The percentile to use for the maximum (by default, 100, i.e. the maximum of the array)

vmin

The minimum to use (in which case it is not calculated from the specified method)

vmax

The maximum to use (in which case it is not calculated from the specified method)

method

A string that defines how minimum and maximum shall be set. This argument is not optional and can be one of the following:

data

plot the ticks exactly where the data is.

mid

plot the ticks in the middle of the data.

rounded

Sets the minimum and maximum of the ticks to the rounded data minimum or maximum. Ticks are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimal tick will always be lower or equal than the data minimum, the maximal tick will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the ticks are chose such that they are symmetric around zero

minmax

Uses the minimum as minimal tick and maximum as maximal tick

sym

Same as minmax but symmetric around zero

log

Use logarithmic bounds. In this case, the given number N determines the number of bounds per power of tenth (i.e. N == 2 results in something like 1.0, 5.0, 10.0, 50.0, etc., If this second number is None, then it will be chosen such that we have around 11 boundaries but at least one per power of ten.

symlog

The same as log but symmetric around 0. If the number N is None, then we have around 12 boundaries but at least one per power of ten

int

Specifies how many ticks to use with the 'rounded' option. I.e. if integer i, then this is the same as ['rounded', i].

matplotlib.colors.Normalize

A matplotlib normalization instance

Examples

  • Plot 11 bounds over the whole data range:

    >>> plotter.update(bounds='rounded')
    

    which is equivalent to:

    >>> plotter.update(bounds={'method': 'rounded'})
    
  • Plot 7 ticks over the whole data range where the maximal and minimal tick matches the data maximum and minimum:

    >>> plotter.update(bounds=['minmax', 7])
    

    which is equivaluent to:

    >>> plotter.update(bounds={'method': 'minmax', 'N': 7})
    
  • chop the first and last five percentiles:

    >>> plotter.update(bounds=['rounded', None, 5, 95])
    

    which is equivalent to:

    >>> plotter.update(bounds={'method': 'rounded', 'percmin': 5,
    ...                        'percmax': 95})
    
  • Plot 3 bounds per power of ten:

    >>> plotter.update(bounds=['log', 3])
    
  • Plot continuous logarithmic bounds:

    >>> from matplotlib.colors import LogNorm
    >>> plotter.update(bounds=LogNorm())
    

See also

cmap

Specifies the colormap

cbar

Specify the position of the colorbars

Possible types

bool

True: defaults to ‘b’ False: Don’t draw any colorbar

str

The string can be a combination of one of the following strings: {‘fr’, ‘fb’, ‘fl’, ‘ft’, ‘b’, ‘r’, ‘sv’, ‘sh’}

  • ‘b’, ‘r’ stand for bottom and right of the axes

  • ‘fr’, ‘fb’, ‘fl’, ‘ft’ stand for bottom, right, left and top of the figure

  • ‘sv’ and ‘sh’ stand for a vertical or horizontal colorbar in a separate figure

list

A containing one of the above positions

Examples

Draw a colorbar at the bottom and left of the axes:

>>> plotter.update(cbar='bl')
cbarspacing

Specify the spacing of the bounds in the colorbar

Possible types

str {‘uniform’, ‘proportional’}

if 'uniform', every color has exactly the same width in the colorbar, if 'proportional', the size is chosen according to the data

clabel

Show the colorbar label

Set the label of the colorbar. You can insert any meta key from the xarray.DataArray.attrs via a string like '%(key)s'. Furthermore there are some special cases:

  • Strings like '%Y', '%b', etc. will be replaced using the datetime.datetime.strftime() method as long as the data has a time coordinate and this can be converted to a datetime object.

  • '%(x)s', '%(y)s', '%(z)s', '%(t)s' will be replaced by the value of the x-, y-, z- or time coordinate (as long as this coordinate is one-dimensional in the data)

  • any attribute of one of the above coordinates is inserted via axis + key (e.g. the name of the x-coordinate can be inserted via '%(xname)s').

  • Labels defined in the psyplot.rcParams 'texts.labels' key are also replaced when enclosed by ‘{}’. The standard labels are

    • tinfo: %H:%M

    • dtinfo: %B %d, %Y. %H:%M

    • dinfo: %B %d, %Y

    • desc: %(long_name)s [%(units)s]

    • sdesc: %(name)s [%(units)s]

Possible types

str

The title for the set_label() method.

clabelprops

Properties of the Colorbar label

Specify the font properties of the figure title manually.

Possible types

dict

Items may be any valid text property

clabelsize

Set the size of the Colorbar label

Possible types

float

The absolute font size in points (e.g., 12)

string

Strings might be ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’.

clabelweight

Set the fontweight of the Colorbar label

Possible types

float

a float between 0 and 1000

string

Possible strings are one of ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’.

cmap

Specify the color map

This formatoption specifies the color coding of the data via a matplotlib.colors.Colormap

Possible types

str

Strings may be any valid colormap name suitable for the matplotlib.cm.get_cmap() function or one of the color lists defined in the ‘colors.cmaps’ key of the psyplot.rcParams dictionary (including their reversed color maps given via the ‘_r’ extension).

matplotlib.colors.Colormap

The colormap instance to use

See also

bounds

specifies the boundaries of the colormap

coord

Specify what to use for the x-axis

Possible types

'index'

Will use the index of the cell along the transect

'distance'

Will use the euclidean distance of the start of the transect

'haversine'

Will use the haversine distance in kilometers of the start of the transect. This can only be used if the x- and y-coordinates have units in 'degrees_east' and 'degrees_north', or 'radian' respectively.

'x'

Will use the x-coordinate of the initial array

'y'

Will use the y-coordinate of the initial array

cticklabels

Specify the colorbar ticklabels

Possible types

str

A formatstring like '%Y' for plotting the year (in the case that time is shown on the axis) or ‘%i’ for integers

array

An array of strings to use for the ticklabels

See also

cticks, cticksize, ctickweight, ctickprops, vcticks, vcticksize, vctickweight, vctickprops

ctickprops

Specify the font properties of the colorbar ticklabels

Possible types

dict

Items may be anything of the matplotlib.pyplot.tick_params() function

See also

cticksize, ctickweight, cticklabels, cticks, vcticksize, vctickweight, vcticklabels, vcticks

cticks

Specify the tick locations of the colorbar

Possible types

None

use the default ticks

numeric array

specifies the ticks manually

str or list [str, …]

A list of the below mentioned values of the mapping like [method, N, percmin, percmax, vmin, vmax], where only the first one is absolutely necessary

dict

Automatically determine the ticks corresponding to the data. The mapping can have the following keys, but only method is not optional.

N

An integer describing the number of boundaries (or ticks per power of ten, see log and symlog above)

percmin

The percentile to use for the minimum (by default, 0, i.e. the minimum of the array)

percmax

The percentile to use for the maximum (by default, 100, i.e. the maximum of the array)

vmin

The minimum to use (in which case it is not calculated from the specified method)

vmax

The maximum to use (in which case it is not calculated from the specified method)

method

A string that defines how minimum and maximum shall be set. This argument is not optional and can be one of the following:

data

plot the ticks exactly where the data is.

mid

plot the ticks in the middle of the data.

rounded

Sets the minimum and maximum of the ticks to the rounded data minimum or maximum. Ticks are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimal tick will always be lower or equal than the data minimum, the maximal tick will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the ticks are chose such that they are symmetric around zero

minmax

Uses the minimum as minimal tick and maximum as maximal tick

sym

Same as minmax but symmetric around zero

log

Use logarithmic bounds. In this case, the given number N determines the number of bounds per power of tenth (i.e. N == 2 results in something like 1.0, 5.0, 10.0, 50.0, etc., If this second number is None, then it will be chosen such that we have around 11 boundaries but at least one per power of ten.

symlog

The same as log but symmetric around 0. If the number N is None, then we have around 12 boundaries but at least one per power of ten

bounds

let the bounds keyword determine the ticks. An additional integer i may be specified to only use every i-th bound as a tick (see also int below)

midbounds

Same as bounds but in the middle between two bounds

int

Specifies how many ticks to use with the 'bounds' option. I.e. if integer i, then this is the same as ['bounds', i].

See also

cticklabels

cticksize

Specify the font size of the colorbar ticklabels

Possible types

float

The absolute font size in points (e.g., 12)

string

Strings might be ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’.

See also

ctickweight, ctickprops, cticklabels, cticks, vctickweight, vctickprops, vcticklabels, vcticks

ctickweight

Specify the fontweight of the colorbar ticklabels

Possible types

float

a float between 0 and 1000

string

Possible strings are one of ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’.

See also

cticksize, ctickprops, cticklabels, cticks, vcticksize, vctickprops, vcticklabels, vcticks

datagrid

Show the grid of the data

This formatoption shows the grid of the data (without labels)

Possible types

None

Don’t show the data grid

str

A linestyle in the form 'k-', where 'k' is the color and '-' the linestyle.

dict

any keyword arguments that are passed to the plotting function ( matplotlib.pyplot.triplot() for unstructured grids and matplotlib.pyplot.hlines() for rectilinear grids)

See also

mask_datagrid

To display cells with NaN

extend

Draw arrows at the side of the colorbar

Possible types

str {‘neither’, ‘both’, ‘min’ or ‘max’}

If not ‘neither’, make pointed end(s) for out-of-range values

figtitle

Plot a figure title

Set the title of the figure. You can insert any meta key from the xarray.DataArray.attrs via a string like '%(key)s'. Furthermore there are some special cases:

  • Strings like '%Y', '%b', etc. will be replaced using the datetime.datetime.strftime() method as long as the data has a time coordinate and this can be converted to a datetime object.

  • '%(x)s', '%(y)s', '%(z)s', '%(t)s' will be replaced by the value of the x-, y-, z- or time coordinate (as long as this coordinate is one-dimensional in the data)

  • any attribute of one of the above coordinates is inserted via axis + key (e.g. the name of the x-coordinate can be inserted via '%(xname)s').

  • Labels defined in the psyplot.rcParams 'texts.labels' key are also replaced when enclosed by ‘{}’. The standard labels are

    • tinfo: %H:%M

    • dtinfo: %B %d, %Y. %H:%M

    • dinfo: %B %d, %Y

    • desc: %(long_name)s [%(units)s]

    • sdesc: %(name)s [%(units)s]

Possible types

str

The title for the suptitle() function

Notes

  • If the plotter is part of a psyplot.project.Project and multiple plotters of this project are on the same figure, the replacement attributes (see above) are joined by a delimiter. If the delimiter attribute of this Figtitle instance is not None, it will be used. Otherwise the rcParams[‘texts.delimiter’] item is used.

  • This is the title of the whole figure! For the title of this specific subplot, see the title formatoption.

figtitleprops

Properties of the figure title

Specify the font properties of the figure title manually.

Possible types

dict

Items may be any valid text property

figtitlesize

Set the size of the figure title

Possible types

float

The absolute font size in points (e.g., 12)

string

Strings might be ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’.

figtitleweight

Set the fontweight of the figure title

Possible types

float

a float between 0 and 1000

string

Possible strings are one of ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’.

grid

Display the grid

Show the grid on the plot with the specified color.

Possible types

None

If the grid is currently shown, it will not be displayed any longer. If the grid is not shown, it will be drawn

bool

If True, the grid is displayed with the automatic settings (usually black)

string, tuple.

Defines the color of the grid.

Notes

The following color abbreviations are supported:

character

color

‘b’

blue

‘g’

green

‘r’

red

‘c’

cyan

‘m’

magenta

‘y’

yellow

‘k’

black

‘w’

white

In addition, you can specify colors in many weird and wonderful ways, including full names ('green'), hex strings ('#008000'), RGB or RGBA tuples ((0,1,0,1)) or grayscale intensities as a string ('0.8').

interp_bounds

Interpolate grid cell boundaries for 2D plots

This formatoption can be used to tell enable and disable the interpolation of grid cell boundaries. Usually, netCDF files only contain the centered coordinates. In this case, we interpolate the boundaries between the grid cell centers.

Possible types

None

Interpolate the boundaries, except for circumpolar grids

bool

If True (the default), the grid cell boundaries are inter- and extrapolated. Otherwise, if False, the coordinate centers are used and the default behaviour of matplotlib cuts of the most outer row and column of the 2D-data. Note that this results in a slight shift of the data

labelprops

Set the font properties of both, x- and y-label

Possible types

dict

A dictionary with the keys 'x' and (or) 'y' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is used for the x- and y-axis. The values in the dictionary can be one types below.

dict

Items may be any valid text property

labelsize

Set the size of both, x- and y-label

Possible types

dict

A dictionary with the keys 'x' and (or) 'y' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is used for the x- and y-axis. The values in the dictionary can be one types below.

float

The absolute font size in points (e.g., 12)

string

Strings might be ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’.

labelweight

Set the font size of both, x- and y-label

Possible types

dict

A dictionary with the keys 'x' and (or) 'y' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is used for the x- and y-axis. The values in the dictionary can be one types below.

float

a float between 0 and 1000

string

Possible strings are one of ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’.

levels

The levels for the contour plot

This formatoption sets the levels for the filled contour plot and only has an effect if the plot Formatoption is set to 'contourf'

Possible types

None

Use the settings from the bounds formatoption and if this does not specify boundaries, use 11

numeric array

specifies the ticks manually

str or list [str, …]

A list of the below mentioned values of the mapping like [method, N, percmin, percmax, vmin, vmax], where only the first one is absolutely necessary

dict

Automatically determine the ticks corresponding to the data. The mapping can have the following keys, but only method is not optional.

N

An integer describing the number of boundaries (or ticks per power of ten, see log and symlog above)

percmin

The percentile to use for the minimum (by default, 0, i.e. the minimum of the array)

percmax

The percentile to use for the maximum (by default, 100, i.e. the maximum of the array)

vmin

The minimum to use (in which case it is not calculated from the specified method)

vmax

The maximum to use (in which case it is not calculated from the specified method)

method

A string that defines how minimum and maximum shall be set. This argument is not optional and can be one of the following:

data

plot the ticks exactly where the data is.

mid

plot the ticks in the middle of the data.

rounded

Sets the minimum and maximum of the ticks to the rounded data minimum or maximum. Ticks are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimal tick will always be lower or equal than the data minimum, the maximal tick will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the ticks are chose such that they are symmetric around zero

minmax

Uses the minimum as minimal tick and maximum as maximal tick

sym

Same as minmax but symmetric around zero

log

Use logarithmic bounds. In this case, the given number N determines the number of bounds per power of tenth (i.e. N == 2 results in something like 1.0, 5.0, 10.0, 50.0, etc., If this second number is None, then it will be chosen such that we have around 11 boundaries but at least one per power of ten.

symlog

The same as log but symmetric around 0. If the number N is None, then we have around 12 boundaries but at least one per power of ten

int

Specifies how many ticks to use with the 'rounded' option. I.e. if integer i, then this is the same as ['rounded', i].

mask

Mask the data where a certain condition is True

This formatoption can be used to mask the plotting data based on another array. This array can be the name of a variable in the base dataset, or it can be a numeric array. Note that the data needs to be on exactly the same coordinates as the data shown here

Possible types

None

Apply no mask

str

The name of a variable in the base dataset to use.

  • dimensions that are in the given mask but not in the visualized base variable will be aggregated using numpy.any()

  • if the given mask misses dimensions that are in the visualized data (i.e. the data of this plotter), we broadcast the mask to match the shape of the data

  • dimensions that are in mask and the base variable, but not in the visualized data will be matched against each other

str

The path to a netCDF file that shall be loaded

xr.DataArray or np.ndarray

An array that can be broadcasted to the shape of the data

mask_datagrid

Mask the datagrid where the array is NaN

This boolean formatoption enables to mask the grid of the datagrid formatoption where the data is NaN

Possible types

bool

Either True, to not display the data grid for cells with NaN, or False

See also

datagrid

maskbetween

Mask data points between two numbers

Possible types

float

The floating number to mask above

maskgeq

Mask data points greater than or equal to a number

Possible types

float

The floating number to mask above

maskgreater

Mask data points greater than a number

Possible types

float

The floating number to mask above

maskleq

Mask data points smaller than or equal to a number

Possible types

float

The floating number to mask below

maskless

Mask data points smaller than a number

Possible types

float

The floating number to mask below

miss_color

Set the color for missing values

Possible types

None

Use the default from the colormap

string, tuple.

Defines the color of the grid.

plot

Specify the plotting method

Possible types

None

Don’t make any plotting

‘mesh’

Use the matplotlib.pyplot.pcolormesh() function to make the plot

post

Apply your own postprocessing script

This formatoption let’s you apply your own post processing script. Just enter the script as a string and it will be executed. The formatoption will be made available via the self variable

Possible types

None

Don’t do anything

str

The post processing script as string

Note

This formatoption uses the built-in exec() function to compile the script. Since this poses a security risk when loading psyplot projects, it is by default disabled through the Plotter.enable_post attribute. If you are sure that you can trust the script in this formatoption, set this attribute of the corresponding Plotter to True

Examples

Assume, you want to manually add the mean of the data to the title of the matplotlib axes. You can simply do this via

from psyplot.plotter import Plotter
from xarray import DataArray

plotter = Plotter(DataArray([1, 2, 3]))
# enable the post formatoption
plotter.enable_post = True
plotter.update(post="self.ax.set_title(str(self.data.mean()))")
plotter.ax.get_title()
"2.0"

By default, the post formatoption is only ran, when it is explicitly updated. However, you can use the post_timing formatoption, to run it automatically. E.g. for running it after every update of the plotter, you can set

plotter.update(post_timing="always")

See also

post_timing

Determine the timing of this formatoption

post_timing

Determine when to run the post formatoption

This formatoption determines, whether the post formatoption should be run never, after replot or after every update.

Possible types

‘never’

Never run post processing scripts

‘always’

Always run post processing scripts

‘replot’

Only run post processing scripts when the data changes or a replot is necessary

See also

post

The post processing formatoption

selectors: Dict[Axes, widgets.LassoSelector]
sym_lims

Make x- and y-axis symmetric

Possible types

None

No symmetric type

‘min’

Use the minimum of x- and y-limits

‘max’

Use the maximum of x- and y-limits

[str, str]

A combination, None, 'min' and 'max' specific for minimum and maximum limit

text

Add text anywhere on the plot

This formatoption draws a text on the specified position on the figure. You can insert any meta key from the xarray.DataArray.attrs via a string like '%(key)s'. Furthermore there are some special cases:

  • Strings like '%Y', '%b', etc. will be replaced using the datetime.datetime.strftime() method as long as the data has a time coordinate and this can be converted to a datetime object.

  • '%(x)s', '%(y)s', '%(z)s', '%(t)s' will be replaced by the value of the x-, y-, z- or time coordinate (as long as this coordinate is one-dimensional in the data)

  • any attribute of one of the above coordinates is inserted via axis + key (e.g. the name of the x-coordinate can be inserted via '%(xname)s').

  • Labels defined in the psyplot.rcParams 'texts.labels' key are also replaced when enclosed by ‘{}’. The standard labels are

    • tinfo: %H:%M

    • dtinfo: %B %d, %Y. %H:%M

    • dinfo: %B %d, %Y

    • desc: %(long_name)s [%(units)s]

    • sdesc: %(name)s [%(units)s]

Possible types

str

If string s: this will be used as (1., 1., s, {‘ha’: ‘right’}) (i.e. a string in the upper right corner of the axes).

tuple or list of tuples (x,y,s[,coord.-system][,options]])

Each tuple defines a text instance on the plot. 0<=x, y<=1 are the coordinates. The coord.-system can be either the data coordinates (default, 'data') or the axes coordinates ('axes') or the figure coordinates (‘fig’). The string s finally is the text. options may be a dictionary to specify format the appearence (e.g. 'color', 'fontweight', 'fontsize', etc., see matplotlib.text.Text for possible keys). To remove one single text from the plot, set (x,y,’’[, coord.-system]) for the text at position (x,y)

empty list

remove all texts from the plot

See also

title, figtitle

ticksize

Change the ticksize of the ticklabels

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

float

The absolute font size in points (e.g., 12)

string

Strings might be ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’.

tickweight

Change the fontweight of the ticks

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

float

a float between 0 and 1000

string

Possible strings are one of ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’.

tight

Automatically adjust the plots.

If set to True, the plots are automatically adjusted to fit to the figure limitations via the matplotlib.pyplot.tight_layout() function.

Possible types

bool

True for automatic adjustment

Warning

There is no update method to undo what happend after this formatoption is set to True!

title

Show the title

Set the title of the plot. You can insert any meta key from the xarray.DataArray.attrs via a string like '%(key)s'. Furthermore there are some special cases:

  • Strings like '%Y', '%b', etc. will be replaced using the datetime.datetime.strftime() method as long as the data has a time coordinate and this can be converted to a datetime object.

  • '%(x)s', '%(y)s', '%(z)s', '%(t)s' will be replaced by the value of the x-, y-, z- or time coordinate (as long as this coordinate is one-dimensional in the data)

  • any attribute of one of the above coordinates is inserted via axis + key (e.g. the name of the x-coordinate can be inserted via '%(xname)s').

  • Labels defined in the psyplot.rcParams 'texts.labels' key are also replaced when enclosed by ‘{}’. The standard labels are

    • tinfo: %H:%M

    • dtinfo: %B %d, %Y. %H:%M

    • dinfo: %B %d, %Y

    • desc: %(long_name)s [%(units)s]

    • sdesc: %(name)s [%(units)s]

Possible types

str

The title for the title() function.

Notes

This is the title of this specific subplot! For the title of the whole figure, see the figtitle formatoption.

titleprops

Properties of the title

Specify the font properties of the figure title manually.

Possible types

dict

Items may be any valid text property

titlesize

Set the size of the title

Possible types

float

The absolute font size in points (e.g., 12)

string

Strings might be ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’.

titleweight

Set the fontweight of the title

Possible types

float

a float between 0 and 1000

string

Possible strings are one of ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’.

transect

Transect within a 2D plot

This formatoption takes a list of x-y tuples, the so-called transect, and extracts the raw data along this path.

Possible types

list of x-y tuples

The point coordinates of the transect.

None

Uses up to the first 100 cells

transect_method

Specify the method how to select the transect.

This formatoption specifies how the transect is selected.

Possible types

‘nearest’

Take the nearest grid point along the transect. This will not interpolate and return a unique list of grid points from the raw data.

‘nearest_exact’

Take the nearest grid point, one point from the raw data per point in the transect

‘inverse_distance_weighting’

Interpolation of the value at the requested position by inverse distance weighting method. See pyinterp.RTree.inverse_distance_weighting()

str

Any other method suitable for the rbf parameter of the pyinterp.RTree.radial_basis_function() method

transect_resolution

Expand the transect to a minimum resolution.

This formatoption expands the segments of the transect to fullfil a minimum resolution. Everything but False will expand the segments of the transect to fullfil the minimum resolution.

This formatoption is of particular importance if you want to use the vertical transect plotter in combination with a map.

Possible types

False

Do not make any changes to the provided transect but take it as it is

True or 'auto'

The default value estimates the resolution of the underlying spatial data and estimates it’s minimum resolution. This won’t not work for unstructured data!

float

Specify the spatial resolution directly

transform

Specify the coordinate system of the data

This formatoption defines the coordinate system of the data (usually we expect a simple latitude longitude coordinate system)

Possible types

cartopy.crs.CRS

A cartopy projection instance (e.g. cartopy.crs.PlateCarree)

str

A string specifies the projection instance to use. The centered longitude and latitude are determined by the clon and clat formatoptions. Possible strings are (each standing for the specified projection)

cf

try to decode the CF-conventions

cyl

cartopy.crs.PlateCarree

robin

cartopy.crs.Robinson

moll

cartopy.crs.Mollweide

geo

cartopy.crs.Geostationary

northpole

cartopy.crs.NorthPolarStereo

southpole

cartopy.crs.SouthPolarStereo

ortho

cartopy.crs.Orthographic

stereo

cartopy.crs.Stereographic

near

cartopy.crs.NearsidePerspective

rotated

cartopy.crs.RotatedPole

The special case 'cf' tries to decode the CF-conventions in the data. If this is not possible, we assume a standard lat-lon projection ('cyl')

transpose
xlabel

Set the x-axis label

Set the label for the x-axis. You can insert any meta key from the xarray.DataArray.attrs via a string like '%(key)s'. Furthermore there are some special cases:

  • Strings like '%Y', '%b', etc. will be replaced using the datetime.datetime.strftime() method as long as the data has a time coordinate and this can be converted to a datetime object.

  • '%(x)s', '%(y)s', '%(z)s', '%(t)s' will be replaced by the value of the x-, y-, z- or time coordinate (as long as this coordinate is one-dimensional in the data)

  • any attribute of one of the above coordinates is inserted via axis + key (e.g. the name of the x-coordinate can be inserted via '%(xname)s').

  • Labels defined in the psyplot.rcParams 'texts.labels' key are also replaced when enclosed by ‘{}’. The standard labels are

    • tinfo: %H:%M

    • dtinfo: %B %d, %Y. %H:%M

    • dinfo: %B %d, %Y

    • desc: %(long_name)s [%(units)s]

    • sdesc: %(name)s [%(units)s]

Possible types

str

The text for the xlabel() function.

See also

xlabelsize, xlabelweight, xlabelprops

xlim

Set the x-axis limits

Possible types

None

To not change the current limits

str or list [str, str] or [[str, float], [str, float]]

Automatically determine the ticks corresponding to the data. The given string determines how the limits are calculated. The float determines the percentile to use A string can be one of the following:

rounded

Sets the minimum and maximum of the limits to the rounded data minimum or maximum. Limits are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimum will always be lower or equal than the data minimum, the maximum will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the limits are chosen such that they are symmetric around zero

minmax

Uses the minimum and maximum

sym

Same as minmax but symmetric around zero

tuple (xmin, xmax)

xmin is the smaller value, xmax the larger. Any of those values can be None or one of the strings (or lists) above to use the corresponding value here

See also

ylim

xrotation

Rotate the x-axis ticks

Possible types

float

The rotation angle in degrees

See also

yrotation

xticklabels

Modify the x-axis ticklabels

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

str

A formatstring like '%Y' for plotting the year (in the case that time is shown on the axis) or ‘%i’ for integers

array

An array of strings to use for the ticklabels

xtickprops

Specify the x-axis tick parameters

This formatoption can be used to make a detailed change of the ticks parameters on the x-axis.

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

dict

Items may be anything of the matplotlib.pyplot.tick_params() function

xticks

Modify the x-axis ticks

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

None

use the default ticks

int

for an integer i, only every i-th tick of the default ticks are used

numeric array

specifies the ticks manually

str or list [str, …]

A list of the below mentioned values of the mapping like [method, N, percmin, percmax, vmin, vmax], where only the first one is absolutely necessary

dict

Automatically determine the ticks corresponding to the data. The mapping can have the following keys, but only method is not optional.

N

An integer describing the number of boundaries (or ticks per power of ten, see log and symlog above)

percmin

The percentile to use for the minimum (by default, 0, i.e. the minimum of the array)

percmax

The percentile to use for the maximum (by default, 100, i.e. the maximum of the array)

vmin

The minimum to use (in which case it is not calculated from the specified method)

vmax

The maximum to use (in which case it is not calculated from the specified method)

method

A string that defines how minimum and maximum shall be set. This argument is not optional and can be one of the following:

data

plot the ticks exactly where the data is.

mid

plot the ticks in the middle of the data.

rounded

Sets the minimum and maximum of the ticks to the rounded data minimum or maximum. Ticks are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimal tick will always be lower or equal than the data minimum, the maximal tick will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the ticks are chose such that they are symmetric around zero

minmax

Uses the minimum as minimal tick and maximum as maximal tick

sym

Same as minmax but symmetric around zero

log

Use logarithmic bounds. In this case, the given number N determines the number of bounds per power of tenth (i.e. N == 2 results in something like 1.0, 5.0, 10.0, 50.0, etc., If this second number is None, then it will be chosen such that we have around 11 boundaries but at least one per power of ten.

symlog

The same as log but symmetric around 0. If the number N is None, then we have around 12 boundaries but at least one per power of ten

hour

draw ticks every hour

day

draw ticks every day

week

draw ticks every week

month, monthend, monthbegin

draw ticks in the middle, at the end or at the beginning of each month

year, yearend, yearbegin

draw ticks in the middle, at the end or at the beginning of each year

For data, mid, hour, day, week, month, etc., the optional second value can be an integer i determining that every i-th data point shall be used (by default, it is set to 1). For rounded, roundedsym, minmax and sym, the second value determines the total number of ticks (defaults to 11).

Examples

Plot 11 ticks over the whole data range:

>>> plotter.update(xticks='rounded')

Plot 7 ticks over the whole data range where the maximal and minimal tick matches the data maximum and minimum:

>>> plotter.update(xticks=['minmax', 7])

Plot ticks every year and minor ticks every month:

>>> plotter.update(xticks={'major': 'year', 'minor': 'month'})
ylabel

Set the y-axis label

Set the label for the y-axis. You can insert any meta key from the xarray.DataArray.attrs via a string like '%(key)s'. Furthermore there are some special cases:

  • Strings like '%Y', '%b', etc. will be replaced using the datetime.datetime.strftime() method as long as the data has a time coordinate and this can be converted to a datetime object.

  • '%(x)s', '%(y)s', '%(z)s', '%(t)s' will be replaced by the value of the x-, y-, z- or time coordinate (as long as this coordinate is one-dimensional in the data)

  • any attribute of one of the above coordinates is inserted via axis + key (e.g. the name of the x-coordinate can be inserted via '%(xname)s').

  • Labels defined in the psyplot.rcParams 'texts.labels' key are also replaced when enclosed by ‘{}’. The standard labels are

    • tinfo: %H:%M

    • dtinfo: %B %d, %Y. %H:%M

    • dinfo: %B %d, %Y

    • desc: %(long_name)s [%(units)s]

    • sdesc: %(name)s [%(units)s]

Possible types

str

The text for the ylabel() function.

See also

ylabelsize, ylabelweight, ylabelprops

ylim

Set the y-axis limits

Possible types

None

To not change the current limits

str or list [str, str] or [[str, float], [str, float]]

Automatically determine the ticks corresponding to the data. The given string determines how the limits are calculated. The float determines the percentile to use A string can be one of the following:

rounded

Sets the minimum and maximum of the limits to the rounded data minimum or maximum. Limits are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimum will always be lower or equal than the data minimum, the maximum will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the limits are chosen such that they are symmetric around zero

minmax

Uses the minimum and maximum

sym

Same as minmax but symmetric around zero

tuple (xmin, xmax)

xmin is the smaller value, xmax the larger. Any of those values can be None or one of the strings (or lists) above to use the corresponding value here

See also

xlim

yrotation

Rotate the y-axis ticks

Possible types

float

The rotation angle in degrees

See also

xrotation

yticklabels

Modify the y-axis ticklabels

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

str

A formatstring like '%Y' for plotting the year (in the case that time is shown on the axis) or ‘%i’ for integers

array

An array of strings to use for the ticklabels

ytickprops

Specify the y-axis tick parameters

This formatoption can be used to make a detailed change of the ticks parameters of the y-axis.

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

dict

Items may be anything of the matplotlib.pyplot.tick_params() function

yticks

Modify the y-axis ticks

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

None

use the default ticks

int

for an integer i, only every i-th tick of the default ticks are used

numeric array

specifies the ticks manually

str or list [str, …]

A list of the below mentioned values of the mapping like [method, N, percmin, percmax, vmin, vmax], where only the first one is absolutely necessary

dict

Automatically determine the ticks corresponding to the data. The mapping can have the following keys, but only method is not optional.

N

An integer describing the number of boundaries (or ticks per power of ten, see log and symlog above)

percmin

The percentile to use for the minimum (by default, 0, i.e. the minimum of the array)

percmax

The percentile to use for the maximum (by default, 100, i.e. the maximum of the array)

vmin

The minimum to use (in which case it is not calculated from the specified method)

vmax

The maximum to use (in which case it is not calculated from the specified method)

method

A string that defines how minimum and maximum shall be set. This argument is not optional and can be one of the following:

data

plot the ticks exactly where the data is.

mid

plot the ticks in the middle of the data.

rounded

Sets the minimum and maximum of the ticks to the rounded data minimum or maximum. Ticks are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimal tick will always be lower or equal than the data minimum, the maximal tick will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the ticks are chose such that they are symmetric around zero

minmax

Uses the minimum as minimal tick and maximum as maximal tick

sym

Same as minmax but symmetric around zero

log

Use logarithmic bounds. In this case, the given number N determines the number of bounds per power of tenth (i.e. N == 2 results in something like 1.0, 5.0, 10.0, 50.0, etc., If this second number is None, then it will be chosen such that we have around 11 boundaries but at least one per power of ten.

symlog

The same as log but symmetric around 0. If the number N is None, then we have around 12 boundaries but at least one per power of ten

hour

draw ticks every hour

day

draw ticks every day

week

draw ticks every week

month, monthend, monthbegin

draw ticks in the middle, at the end or at the beginning of each month

year, yearend, yearbegin

draw ticks in the middle, at the end or at the beginning of each year

For data, mid, hour, day, week, month, etc., the optional second value can be an integer i determining that every i-th data point shall be used (by default, it is set to 1). For rounded, roundedsym, minmax and sym, the second value determines the total number of ticks (defaults to 11).

See also

yticklabels, ticksize, tickweight, ytickprops

xticks

for possible examples

class psy_transect.plotters.VerticalTransectPlotter(*args, **kwargs)

Bases: Simple2DPlotter

Attributes:

allowed_dims

The number of allowed dimensions in the for the visualization.

selectors

Axes formatoptions:

axiscolor

Color the x- and y-axes

background

The background color for the matplotlib axes.

grid

Display the grid

tight

Automatically adjust the plots.

transpose

xlim

Set the x-axis limits

ylim

Set the y-axis limits

Color coding formatoptions:

bounds

Specify the boundaries of the colorbar

cbar

Specify the position of the colorbars

cbarspacing

Specify the spacing of the bounds in the colorbar

cmap

Specify the color map

ctickprops

Specify the font properties of the colorbar ticklabels

cticksize

Specify the font size of the colorbar ticklabels

ctickweight

Specify the fontweight of the colorbar ticklabels

extend

Draw arrows at the side of the colorbar

levels

The levels for the contour plot

miss_color

Set the color for missing values

Label formatoptions:

clabel

Show the colorbar label

clabelprops

Properties of the Colorbar label

clabelsize

Set the size of the Colorbar label

clabelweight

Set the fontweight of the Colorbar label

figtitle

Plot a figure title

figtitleprops

Properties of the figure title

figtitlesize

Set the size of the figure title

figtitleweight

Set the fontweight of the figure title

labelprops

Set the font properties of both, x- and y-label

labelsize

Set the size of both, x- and y-label

labelweight

Set the font size of both, x- and y-label

text

Add text anywhere on the plot

title

Show the title

titleprops

Properties of the title

titlesize

Set the size of the title

titleweight

Set the fontweight of the title

xlabel

Set the x-axis label

ylabel

Set the y-axis label

Methods:

connect_ax(plotter_or_ax, **kwargs)

Connect to a matplotlib axes via lasso.

disconnect_ax(ax)

Disconnect this plotter from an axes and remove the selector.

get_enhanced_attrs(arr, *args, **kwargs)

Miscallaneous formatoptions:

coord

Specify what to use for the x-axis

datagrid

Show the grid of the data

interp_bounds

Interpolate grid cell boundaries for 2D plots

mask_datagrid

Mask the datagrid where the array is NaN

sym_lims

Make x- and y-axis symmetric

ticksize

Change the ticksize of the ticklabels

tickweight

Change the fontweight of the ticks

transect

Transect within a 2D plot

transect_method

Specify the method how to select the transect.

transect_resolution

Expand the transect to a minimum resolution.

Axis tick formatoptions:

cticklabels

Specify the colorbar ticklabels

cticks

Specify the tick locations of the colorbar

xrotation

Rotate the x-axis ticks

xticklabels

Modify the x-axis ticklabels

xtickprops

Specify the x-axis tick parameters

xticks

Modify the x-axis ticks

yrotation

Rotate the y-axis ticks

yticklabels

Modify the y-axis ticklabels

ytickprops

Specify the y-axis tick parameters

yticks

Modify the y-axis ticks

Masking formatoptions:

mask

Mask the data where a certain condition is True

maskbetween

Mask data points between two numbers

maskgeq

Mask data points greater than or equal to a number

maskgreater

Mask data points greater than a number

maskleq

Mask data points smaller than or equal to a number

maskless

Mask data points smaller than a number

Plot formatoptions:

plot

Specify the plotting method

Post processing formatoptions:

post

Apply your own postprocessing script

post_timing

Determine when to run the post formatoption

allowed_dims = 3

The number of allowed dimensions in the for the visualization. If the array is unstructured, one dimension will be subtracted

axiscolor

Color the x- and y-axes

This formatoption colors the left, right, bottom and top axis bar.

Possible types

dict

Keys may be one of {‘right’, ‘left’, ‘bottom’, ‘top’}, the values can be any valid color or None.

Notes

The following color abbreviations are supported:

character

color

‘b’

blue

‘g’

green

‘r’

red

‘c’

cyan

‘m’

magenta

‘y’

yellow

‘k’

black

‘w’

white

In addition, you can specify colors in many weird and wonderful ways, including full names ('green'), hex strings ('#008000'), RGB or RGBA tuples ((0,1,0,1)) or grayscale intensities as a string ('0.8').

background

The background color for the matplotlib axes.

Possible types

‘rc’

to use matplotlibs rc params

None

to use a transparent color

color

Any possible matplotlib color

bounds

Specify the boundaries of the colorbar

Possible types

None

make no normalization

numeric array

specifies the ticks manually

str or list [str, …]

A list of the below mentioned values of the mapping like [method, N, percmin, percmax, vmin, vmax], where only the first one is absolutely necessary

dict

Automatically determine the ticks corresponding to the data. The mapping can have the following keys, but only method is not optional.

N

An integer describing the number of boundaries (or ticks per power of ten, see log and symlog above)

percmin

The percentile to use for the minimum (by default, 0, i.e. the minimum of the array)

percmax

The percentile to use for the maximum (by default, 100, i.e. the maximum of the array)

vmin

The minimum to use (in which case it is not calculated from the specified method)

vmax

The maximum to use (in which case it is not calculated from the specified method)

method

A string that defines how minimum and maximum shall be set. This argument is not optional and can be one of the following:

data

plot the ticks exactly where the data is.

mid

plot the ticks in the middle of the data.

rounded

Sets the minimum and maximum of the ticks to the rounded data minimum or maximum. Ticks are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimal tick will always be lower or equal than the data minimum, the maximal tick will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the ticks are chose such that they are symmetric around zero

minmax

Uses the minimum as minimal tick and maximum as maximal tick

sym

Same as minmax but symmetric around zero

log

Use logarithmic bounds. In this case, the given number N determines the number of bounds per power of tenth (i.e. N == 2 results in something like 1.0, 5.0, 10.0, 50.0, etc., If this second number is None, then it will be chosen such that we have around 11 boundaries but at least one per power of ten.

symlog

The same as log but symmetric around 0. If the number N is None, then we have around 12 boundaries but at least one per power of ten

int

Specifies how many ticks to use with the 'rounded' option. I.e. if integer i, then this is the same as ['rounded', i].

matplotlib.colors.Normalize

A matplotlib normalization instance

Examples

  • Plot 11 bounds over the whole data range:

    >>> plotter.update(bounds='rounded')
    

    which is equivalent to:

    >>> plotter.update(bounds={'method': 'rounded'})
    
  • Plot 7 ticks over the whole data range where the maximal and minimal tick matches the data maximum and minimum:

    >>> plotter.update(bounds=['minmax', 7])
    

    which is equivaluent to:

    >>> plotter.update(bounds={'method': 'minmax', 'N': 7})
    
  • chop the first and last five percentiles:

    >>> plotter.update(bounds=['rounded', None, 5, 95])
    

    which is equivalent to:

    >>> plotter.update(bounds={'method': 'rounded', 'percmin': 5,
    ...                        'percmax': 95})
    
  • Plot 3 bounds per power of ten:

    >>> plotter.update(bounds=['log', 3])
    
  • Plot continuous logarithmic bounds:

    >>> from matplotlib.colors import LogNorm
    >>> plotter.update(bounds=LogNorm())
    

See also

cmap

Specifies the colormap

cbar

Specify the position of the colorbars

Possible types

bool

True: defaults to ‘b’ False: Don’t draw any colorbar

str

The string can be a combination of one of the following strings: {‘fr’, ‘fb’, ‘fl’, ‘ft’, ‘b’, ‘r’, ‘sv’, ‘sh’}

  • ‘b’, ‘r’ stand for bottom and right of the axes

  • ‘fr’, ‘fb’, ‘fl’, ‘ft’ stand for bottom, right, left and top of the figure

  • ‘sv’ and ‘sh’ stand for a vertical or horizontal colorbar in a separate figure

list

A containing one of the above positions

Examples

Draw a colorbar at the bottom and left of the axes:

>>> plotter.update(cbar='bl')
cbarspacing

Specify the spacing of the bounds in the colorbar

Possible types

str {‘uniform’, ‘proportional’}

if 'uniform', every color has exactly the same width in the colorbar, if 'proportional', the size is chosen according to the data

clabel

Show the colorbar label

Set the label of the colorbar. You can insert any meta key from the xarray.DataArray.attrs via a string like '%(key)s'. Furthermore there are some special cases:

  • Strings like '%Y', '%b', etc. will be replaced using the datetime.datetime.strftime() method as long as the data has a time coordinate and this can be converted to a datetime object.

  • '%(x)s', '%(y)s', '%(z)s', '%(t)s' will be replaced by the value of the x-, y-, z- or time coordinate (as long as this coordinate is one-dimensional in the data)

  • any attribute of one of the above coordinates is inserted via axis + key (e.g. the name of the x-coordinate can be inserted via '%(xname)s').

  • Labels defined in the psyplot.rcParams 'texts.labels' key are also replaced when enclosed by ‘{}’. The standard labels are

    • tinfo: %H:%M

    • dtinfo: %B %d, %Y. %H:%M

    • dinfo: %B %d, %Y

    • desc: %(long_name)s [%(units)s]

    • sdesc: %(name)s [%(units)s]

Possible types

str

The title for the set_label() method.

clabelprops

Properties of the Colorbar label

Specify the font properties of the figure title manually.

Possible types

dict

Items may be any valid text property

clabelsize

Set the size of the Colorbar label

Possible types

float

The absolute font size in points (e.g., 12)

string

Strings might be ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’.

clabelweight

Set the fontweight of the Colorbar label

Possible types

float

a float between 0 and 1000

string

Possible strings are one of ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’.

cmap

Specify the color map

This formatoption specifies the color coding of the data via a matplotlib.colors.Colormap

Possible types

str

Strings may be any valid colormap name suitable for the matplotlib.cm.get_cmap() function or one of the color lists defined in the ‘colors.cmaps’ key of the psyplot.rcParams dictionary (including their reversed color maps given via the ‘_r’ extension).

matplotlib.colors.Colormap

The colormap instance to use

See also

bounds

specifies the boundaries of the colormap

connect_ax(plotter_or_ax: HorizontalTransectPlotterMixin | Axes, **kwargs)

Connect to a matplotlib axes via lasso.

This creates a lasso to be used

Parameters:

plotter_or_ax (VerticalTransectPlotter or matplotlib.axes.Axes) – The plotter whose axes to draw on, or an matplotlib axes. If you pass in the plotter, we make sure that lasso selectors of the plotter still work after an update.

coord

Specify what to use for the x-axis

Possible types

'index'

Will use the index of the cell along the transect

'distance'

Will use the euclidean distance of the start of the transect

'haversine'

Will use the haversine distance in kilometers of the start of the transect. This can only be used if the x- and y-coordinates have units in 'degrees_east' and 'degrees_north', or 'radian' respectively.

'x'

Will use the x-coordinate of the initial array

'y'

Will use the y-coordinate of the initial array

cticklabels

Specify the colorbar ticklabels

Possible types

str

A formatstring like '%Y' for plotting the year (in the case that time is shown on the axis) or ‘%i’ for integers

array

An array of strings to use for the ticklabels

See also

cticks, cticksize, ctickweight, ctickprops, vcticks, vcticksize, vctickweight, vctickprops

ctickprops

Specify the font properties of the colorbar ticklabels

Possible types

dict

Items may be anything of the matplotlib.pyplot.tick_params() function

See also

cticksize, ctickweight, cticklabels, cticks, vcticksize, vctickweight, vcticklabels, vcticks

cticks

Specify the tick locations of the colorbar

Possible types

None

use the default ticks

numeric array

specifies the ticks manually

str or list [str, …]

A list of the below mentioned values of the mapping like [method, N, percmin, percmax, vmin, vmax], where only the first one is absolutely necessary

dict

Automatically determine the ticks corresponding to the data. The mapping can have the following keys, but only method is not optional.

N

An integer describing the number of boundaries (or ticks per power of ten, see log and symlog above)

percmin

The percentile to use for the minimum (by default, 0, i.e. the minimum of the array)

percmax

The percentile to use for the maximum (by default, 100, i.e. the maximum of the array)

vmin

The minimum to use (in which case it is not calculated from the specified method)

vmax

The maximum to use (in which case it is not calculated from the specified method)

method

A string that defines how minimum and maximum shall be set. This argument is not optional and can be one of the following:

data

plot the ticks exactly where the data is.

mid

plot the ticks in the middle of the data.

rounded

Sets the minimum and maximum of the ticks to the rounded data minimum or maximum. Ticks are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimal tick will always be lower or equal than the data minimum, the maximal tick will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the ticks are chose such that they are symmetric around zero

minmax

Uses the minimum as minimal tick and maximum as maximal tick

sym

Same as minmax but symmetric around zero

log

Use logarithmic bounds. In this case, the given number N determines the number of bounds per power of tenth (i.e. N == 2 results in something like 1.0, 5.0, 10.0, 50.0, etc., If this second number is None, then it will be chosen such that we have around 11 boundaries but at least one per power of ten.

symlog

The same as log but symmetric around 0. If the number N is None, then we have around 12 boundaries but at least one per power of ten

bounds

let the bounds keyword determine the ticks. An additional integer i may be specified to only use every i-th bound as a tick (see also int below)

midbounds

Same as bounds but in the middle between two bounds

int

Specifies how many ticks to use with the 'bounds' option. I.e. if integer i, then this is the same as ['bounds', i].

See also

cticklabels

cticksize

Specify the font size of the colorbar ticklabels

Possible types

float

The absolute font size in points (e.g., 12)

string

Strings might be ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’.

See also

ctickweight, ctickprops, cticklabels, cticks, vctickweight, vctickprops, vcticklabels, vcticks

ctickweight

Specify the fontweight of the colorbar ticklabels

Possible types

float

a float between 0 and 1000

string

Possible strings are one of ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’.

See also

cticksize, ctickprops, cticklabels, cticks, vcticksize, vctickprops, vcticklabels, vcticks

datagrid

Show the grid of the data

This formatoption shows the grid of the data (without labels)

Possible types

None

Don’t show the data grid

str

A linestyle in the form 'k-', where 'k' is the color and '-' the linestyle.

dict

any keyword arguments that are passed to the plotting function ( matplotlib.pyplot.triplot() for unstructured grids and matplotlib.pyplot.hlines() for rectilinear grids)

See also

mask_datagrid

To display cells with NaN

disconnect_ax(ax: Axes)

Disconnect this plotter from an axes and remove the selector.

extend

Draw arrows at the side of the colorbar

Possible types

str {‘neither’, ‘both’, ‘min’ or ‘max’}

If not ‘neither’, make pointed end(s) for out-of-range values

figtitle

Plot a figure title

Set the title of the figure. You can insert any meta key from the xarray.DataArray.attrs via a string like '%(key)s'. Furthermore there are some special cases:

  • Strings like '%Y', '%b', etc. will be replaced using the datetime.datetime.strftime() method as long as the data has a time coordinate and this can be converted to a datetime object.

  • '%(x)s', '%(y)s', '%(z)s', '%(t)s' will be replaced by the value of the x-, y-, z- or time coordinate (as long as this coordinate is one-dimensional in the data)

  • any attribute of one of the above coordinates is inserted via axis + key (e.g. the name of the x-coordinate can be inserted via '%(xname)s').

  • Labels defined in the psyplot.rcParams 'texts.labels' key are also replaced when enclosed by ‘{}’. The standard labels are

    • tinfo: %H:%M

    • dtinfo: %B %d, %Y. %H:%M

    • dinfo: %B %d, %Y

    • desc: %(long_name)s [%(units)s]

    • sdesc: %(name)s [%(units)s]

Possible types

str

The title for the suptitle() function

Notes

  • If the plotter is part of a psyplot.project.Project and multiple plotters of this project are on the same figure, the replacement attributes (see above) are joined by a delimiter. If the delimiter attribute of this Figtitle instance is not None, it will be used. Otherwise the rcParams[‘texts.delimiter’] item is used.

  • This is the title of the whole figure! For the title of this specific subplot, see the title formatoption.

figtitleprops

Properties of the figure title

Specify the font properties of the figure title manually.

Possible types

dict

Items may be any valid text property

figtitlesize

Set the size of the figure title

Possible types

float

The absolute font size in points (e.g., 12)

string

Strings might be ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’.

figtitleweight

Set the fontweight of the figure title

Possible types

float

a float between 0 and 1000

string

Possible strings are one of ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’.

get_enhanced_attrs(arr, *args, **kwargs)
grid

Display the grid

Show the grid on the plot with the specified color.

Possible types

None

If the grid is currently shown, it will not be displayed any longer. If the grid is not shown, it will be drawn

bool

If True, the grid is displayed with the automatic settings (usually black)

string, tuple.

Defines the color of the grid.

Notes

The following color abbreviations are supported:

character

color

‘b’

blue

‘g’

green

‘r’

red

‘c’

cyan

‘m’

magenta

‘y’

yellow

‘k’

black

‘w’

white

In addition, you can specify colors in many weird and wonderful ways, including full names ('green'), hex strings ('#008000'), RGB or RGBA tuples ((0,1,0,1)) or grayscale intensities as a string ('0.8').

interp_bounds

Interpolate grid cell boundaries for 2D plots

This formatoption can be used to tell enable and disable the interpolation of grid cell boundaries. Usually, netCDF files only contain the centered coordinates. In this case, we interpolate the boundaries between the grid cell centers.

Possible types

None

Interpolate the boundaries, except for circumpolar grids

bool

If True (the default), the grid cell boundaries are inter- and extrapolated. Otherwise, if False, the coordinate centers are used and the default behaviour of matplotlib cuts of the most outer row and column of the 2D-data. Note that this results in a slight shift of the data

labelprops

Set the font properties of both, x- and y-label

Possible types

dict

A dictionary with the keys 'x' and (or) 'y' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is used for the x- and y-axis. The values in the dictionary can be one types below.

dict

Items may be any valid text property

labelsize

Set the size of both, x- and y-label

Possible types

dict

A dictionary with the keys 'x' and (or) 'y' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is used for the x- and y-axis. The values in the dictionary can be one types below.

float

The absolute font size in points (e.g., 12)

string

Strings might be ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’.

labelweight

Set the font size of both, x- and y-label

Possible types

dict

A dictionary with the keys 'x' and (or) 'y' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is used for the x- and y-axis. The values in the dictionary can be one types below.

float

a float between 0 and 1000

string

Possible strings are one of ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’.

levels

The levels for the contour plot

This formatoption sets the levels for the filled contour plot and only has an effect if the plot Formatoption is set to 'contourf'

Possible types

None

Use the settings from the bounds formatoption and if this does not specify boundaries, use 11

numeric array

specifies the ticks manually

str or list [str, …]

A list of the below mentioned values of the mapping like [method, N, percmin, percmax, vmin, vmax], where only the first one is absolutely necessary

dict

Automatically determine the ticks corresponding to the data. The mapping can have the following keys, but only method is not optional.

N

An integer describing the number of boundaries (or ticks per power of ten, see log and symlog above)

percmin

The percentile to use for the minimum (by default, 0, i.e. the minimum of the array)

percmax

The percentile to use for the maximum (by default, 100, i.e. the maximum of the array)

vmin

The minimum to use (in which case it is not calculated from the specified method)

vmax

The maximum to use (in which case it is not calculated from the specified method)

method

A string that defines how minimum and maximum shall be set. This argument is not optional and can be one of the following:

data

plot the ticks exactly where the data is.

mid

plot the ticks in the middle of the data.

rounded

Sets the minimum and maximum of the ticks to the rounded data minimum or maximum. Ticks are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimal tick will always be lower or equal than the data minimum, the maximal tick will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the ticks are chose such that they are symmetric around zero

minmax

Uses the minimum as minimal tick and maximum as maximal tick

sym

Same as minmax but symmetric around zero

log

Use logarithmic bounds. In this case, the given number N determines the number of bounds per power of tenth (i.e. N == 2 results in something like 1.0, 5.0, 10.0, 50.0, etc., If this second number is None, then it will be chosen such that we have around 11 boundaries but at least one per power of ten.

symlog

The same as log but symmetric around 0. If the number N is None, then we have around 12 boundaries but at least one per power of ten

int

Specifies how many ticks to use with the 'rounded' option. I.e. if integer i, then this is the same as ['rounded', i].

mask

Mask the data where a certain condition is True

This formatoption can be used to mask the plotting data based on another array. This array can be the name of a variable in the base dataset, or it can be a numeric array. Note that the data needs to be on exactly the same coordinates as the data shown here

Possible types

None

Apply no mask

str

The name of a variable in the base dataset to use.

  • dimensions that are in the given mask but not in the visualized base variable will be aggregated using numpy.any()

  • if the given mask misses dimensions that are in the visualized data (i.e. the data of this plotter), we broadcast the mask to match the shape of the data

  • dimensions that are in mask and the base variable, but not in the visualized data will be matched against each other

str

The path to a netCDF file that shall be loaded

xr.DataArray or np.ndarray

An array that can be broadcasted to the shape of the data

mask_datagrid

Mask the datagrid where the array is NaN

This boolean formatoption enables to mask the grid of the datagrid formatoption where the data is NaN

Possible types

bool

Either True, to not display the data grid for cells with NaN, or False

See also

datagrid

maskbetween

Mask data points between two numbers

Possible types

float

The floating number to mask above

maskgeq

Mask data points greater than or equal to a number

Possible types

float

The floating number to mask above

maskgreater

Mask data points greater than a number

Possible types

float

The floating number to mask above

maskleq

Mask data points smaller than or equal to a number

Possible types

float

The floating number to mask below

maskless

Mask data points smaller than a number

Possible types

float

The floating number to mask below

miss_color

Set the color for missing values

Possible types

None

Use the default from the colormap

string, tuple.

Defines the color of the grid.

plot

Specify the plotting method

Possible types

None

Don’t make any plotting

‘mesh’

Use the matplotlib.pyplot.pcolormesh() function to make the plot

post

Apply your own postprocessing script

This formatoption let’s you apply your own post processing script. Just enter the script as a string and it will be executed. The formatoption will be made available via the self variable

Possible types

None

Don’t do anything

str

The post processing script as string

Note

This formatoption uses the built-in exec() function to compile the script. Since this poses a security risk when loading psyplot projects, it is by default disabled through the Plotter.enable_post attribute. If you are sure that you can trust the script in this formatoption, set this attribute of the corresponding Plotter to True

Examples

Assume, you want to manually add the mean of the data to the title of the matplotlib axes. You can simply do this via

from psyplot.plotter import Plotter
from xarray import DataArray

plotter = Plotter(DataArray([1, 2, 3]))
# enable the post formatoption
plotter.enable_post = True
plotter.update(post="self.ax.set_title(str(self.data.mean()))")
plotter.ax.get_title()
"2.0"

By default, the post formatoption is only ran, when it is explicitly updated. However, you can use the post_timing formatoption, to run it automatically. E.g. for running it after every update of the plotter, you can set

plotter.update(post_timing="always")

See also

post_timing

Determine the timing of this formatoption

post_timing

Determine when to run the post formatoption

This formatoption determines, whether the post formatoption should be run never, after replot or after every update.

Possible types

‘never’

Never run post processing scripts

‘always’

Always run post processing scripts

‘replot’

Only run post processing scripts when the data changes or a replot is necessary

See also

post

The post processing formatoption

selectors: Dict[Axes, widgets.LassoSelector]
sym_lims

Make x- and y-axis symmetric

Possible types

None

No symmetric type

‘min’

Use the minimum of x- and y-limits

‘max’

Use the maximum of x- and y-limits

[str, str]

A combination, None, 'min' and 'max' specific for minimum and maximum limit

text

Add text anywhere on the plot

This formatoption draws a text on the specified position on the figure. You can insert any meta key from the xarray.DataArray.attrs via a string like '%(key)s'. Furthermore there are some special cases:

  • Strings like '%Y', '%b', etc. will be replaced using the datetime.datetime.strftime() method as long as the data has a time coordinate and this can be converted to a datetime object.

  • '%(x)s', '%(y)s', '%(z)s', '%(t)s' will be replaced by the value of the x-, y-, z- or time coordinate (as long as this coordinate is one-dimensional in the data)

  • any attribute of one of the above coordinates is inserted via axis + key (e.g. the name of the x-coordinate can be inserted via '%(xname)s').

  • Labels defined in the psyplot.rcParams 'texts.labels' key are also replaced when enclosed by ‘{}’. The standard labels are

    • tinfo: %H:%M

    • dtinfo: %B %d, %Y. %H:%M

    • dinfo: %B %d, %Y

    • desc: %(long_name)s [%(units)s]

    • sdesc: %(name)s [%(units)s]

Possible types

str

If string s: this will be used as (1., 1., s, {‘ha’: ‘right’}) (i.e. a string in the upper right corner of the axes).

tuple or list of tuples (x,y,s[,coord.-system][,options]])

Each tuple defines a text instance on the plot. 0<=x, y<=1 are the coordinates. The coord.-system can be either the data coordinates (default, 'data') or the axes coordinates ('axes') or the figure coordinates (‘fig’). The string s finally is the text. options may be a dictionary to specify format the appearence (e.g. 'color', 'fontweight', 'fontsize', etc., see matplotlib.text.Text for possible keys). To remove one single text from the plot, set (x,y,’’[, coord.-system]) for the text at position (x,y)

empty list

remove all texts from the plot

See also

title, figtitle

ticksize

Change the ticksize of the ticklabels

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

float

The absolute font size in points (e.g., 12)

string

Strings might be ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’.

tickweight

Change the fontweight of the ticks

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

float

a float between 0 and 1000

string

Possible strings are one of ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’.

tight

Automatically adjust the plots.

If set to True, the plots are automatically adjusted to fit to the figure limitations via the matplotlib.pyplot.tight_layout() function.

Possible types

bool

True for automatic adjustment

Warning

There is no update method to undo what happend after this formatoption is set to True!

title

Show the title

Set the title of the plot. You can insert any meta key from the xarray.DataArray.attrs via a string like '%(key)s'. Furthermore there are some special cases:

  • Strings like '%Y', '%b', etc. will be replaced using the datetime.datetime.strftime() method as long as the data has a time coordinate and this can be converted to a datetime object.

  • '%(x)s', '%(y)s', '%(z)s', '%(t)s' will be replaced by the value of the x-, y-, z- or time coordinate (as long as this coordinate is one-dimensional in the data)

  • any attribute of one of the above coordinates is inserted via axis + key (e.g. the name of the x-coordinate can be inserted via '%(xname)s').

  • Labels defined in the psyplot.rcParams 'texts.labels' key are also replaced when enclosed by ‘{}’. The standard labels are

    • tinfo: %H:%M

    • dtinfo: %B %d, %Y. %H:%M

    • dinfo: %B %d, %Y

    • desc: %(long_name)s [%(units)s]

    • sdesc: %(name)s [%(units)s]

Possible types

str

The title for the title() function.

Notes

This is the title of this specific subplot! For the title of the whole figure, see the figtitle formatoption.

titleprops

Properties of the title

Specify the font properties of the figure title manually.

Possible types

dict

Items may be any valid text property

titlesize

Set the size of the title

Possible types

float

The absolute font size in points (e.g., 12)

string

Strings might be ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’.

titleweight

Set the fontweight of the title

Possible types

float

a float between 0 and 1000

string

Possible strings are one of ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’.

transect

Transect within a 2D plot

This formatoption takes a list of x-y tuples, the so-called transect, and extracts the raw data along this path.

Possible types

list of x-y tuples

The point coordinates of the transect.

None

Uses up to the first 100 cells

transect_method

Specify the method how to select the transect.

This formatoption specifies how the transect is selected.

Possible types

‘nearest’

Take the nearest grid point along the transect. This will not interpolate and return a unique list of grid points from the raw data.

‘nearest_exact’

Take the nearest grid point, one point from the raw data per point in the transect

‘inverse_distance_weighting’

Interpolation of the value at the requested position by inverse distance weighting method. See pyinterp.RTree.inverse_distance_weighting()

str

Any other method suitable for the rbf parameter of the pyinterp.RTree.radial_basis_function() method

transect_resolution

Expand the transect to a minimum resolution.

This formatoption expands the segments of the transect to fullfil a minimum resolution. Everything but False will expand the segments of the transect to fullfil the minimum resolution.

This formatoption is of particular importance if you want to use the vertical transect plotter in combination with a map.

Possible types

False

Do not make any changes to the provided transect but take it as it is

True or 'auto'

The default value estimates the resolution of the underlying spatial data and estimates it’s minimum resolution. This won’t not work for unstructured data!

float

Specify the spatial resolution directly

transpose
xlabel

Set the x-axis label

Set the label for the x-axis. You can insert any meta key from the xarray.DataArray.attrs via a string like '%(key)s'. Furthermore there are some special cases:

  • Strings like '%Y', '%b', etc. will be replaced using the datetime.datetime.strftime() method as long as the data has a time coordinate and this can be converted to a datetime object.

  • '%(x)s', '%(y)s', '%(z)s', '%(t)s' will be replaced by the value of the x-, y-, z- or time coordinate (as long as this coordinate is one-dimensional in the data)

  • any attribute of one of the above coordinates is inserted via axis + key (e.g. the name of the x-coordinate can be inserted via '%(xname)s').

  • Labels defined in the psyplot.rcParams 'texts.labels' key are also replaced when enclosed by ‘{}’. The standard labels are

    • tinfo: %H:%M

    • dtinfo: %B %d, %Y. %H:%M

    • dinfo: %B %d, %Y

    • desc: %(long_name)s [%(units)s]

    • sdesc: %(name)s [%(units)s]

Possible types

str

The text for the xlabel() function.

See also

xlabelsize, xlabelweight, xlabelprops

xlim

Set the x-axis limits

Possible types

None

To not change the current limits

str or list [str, str] or [[str, float], [str, float]]

Automatically determine the ticks corresponding to the data. The given string determines how the limits are calculated. The float determines the percentile to use A string can be one of the following:

rounded

Sets the minimum and maximum of the limits to the rounded data minimum or maximum. Limits are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimum will always be lower or equal than the data minimum, the maximum will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the limits are chosen such that they are symmetric around zero

minmax

Uses the minimum and maximum

sym

Same as minmax but symmetric around zero

tuple (xmin, xmax)

xmin is the smaller value, xmax the larger. Any of those values can be None or one of the strings (or lists) above to use the corresponding value here

See also

ylim

xrotation

Rotate the x-axis ticks

Possible types

float

The rotation angle in degrees

See also

yrotation

xticklabels

Modify the x-axis ticklabels

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

str

A formatstring like '%Y' for plotting the year (in the case that time is shown on the axis) or ‘%i’ for integers

array

An array of strings to use for the ticklabels

xtickprops

Specify the x-axis tick parameters

This formatoption can be used to make a detailed change of the ticks parameters on the x-axis.

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

dict

Items may be anything of the matplotlib.pyplot.tick_params() function

xticks

Modify the x-axis ticks

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

None

use the default ticks

int

for an integer i, only every i-th tick of the default ticks are used

numeric array

specifies the ticks manually

str or list [str, …]

A list of the below mentioned values of the mapping like [method, N, percmin, percmax, vmin, vmax], where only the first one is absolutely necessary

dict

Automatically determine the ticks corresponding to the data. The mapping can have the following keys, but only method is not optional.

N

An integer describing the number of boundaries (or ticks per power of ten, see log and symlog above)

percmin

The percentile to use for the minimum (by default, 0, i.e. the minimum of the array)

percmax

The percentile to use for the maximum (by default, 100, i.e. the maximum of the array)

vmin

The minimum to use (in which case it is not calculated from the specified method)

vmax

The maximum to use (in which case it is not calculated from the specified method)

method

A string that defines how minimum and maximum shall be set. This argument is not optional and can be one of the following:

data

plot the ticks exactly where the data is.

mid

plot the ticks in the middle of the data.

rounded

Sets the minimum and maximum of the ticks to the rounded data minimum or maximum. Ticks are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimal tick will always be lower or equal than the data minimum, the maximal tick will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the ticks are chose such that they are symmetric around zero

minmax

Uses the minimum as minimal tick and maximum as maximal tick

sym

Same as minmax but symmetric around zero

log

Use logarithmic bounds. In this case, the given number N determines the number of bounds per power of tenth (i.e. N == 2 results in something like 1.0, 5.0, 10.0, 50.0, etc., If this second number is None, then it will be chosen such that we have around 11 boundaries but at least one per power of ten.

symlog

The same as log but symmetric around 0. If the number N is None, then we have around 12 boundaries but at least one per power of ten

hour

draw ticks every hour

day

draw ticks every day

week

draw ticks every week

month, monthend, monthbegin

draw ticks in the middle, at the end or at the beginning of each month

year, yearend, yearbegin

draw ticks in the middle, at the end or at the beginning of each year

For data, mid, hour, day, week, month, etc., the optional second value can be an integer i determining that every i-th data point shall be used (by default, it is set to 1). For rounded, roundedsym, minmax and sym, the second value determines the total number of ticks (defaults to 11).

Examples

Plot 11 ticks over the whole data range:

>>> plotter.update(xticks='rounded')

Plot 7 ticks over the whole data range where the maximal and minimal tick matches the data maximum and minimum:

>>> plotter.update(xticks=['minmax', 7])

Plot ticks every year and minor ticks every month:

>>> plotter.update(xticks={'major': 'year', 'minor': 'month'})
ylabel

Set the y-axis label

Set the label for the y-axis. You can insert any meta key from the xarray.DataArray.attrs via a string like '%(key)s'. Furthermore there are some special cases:

  • Strings like '%Y', '%b', etc. will be replaced using the datetime.datetime.strftime() method as long as the data has a time coordinate and this can be converted to a datetime object.

  • '%(x)s', '%(y)s', '%(z)s', '%(t)s' will be replaced by the value of the x-, y-, z- or time coordinate (as long as this coordinate is one-dimensional in the data)

  • any attribute of one of the above coordinates is inserted via axis + key (e.g. the name of the x-coordinate can be inserted via '%(xname)s').

  • Labels defined in the psyplot.rcParams 'texts.labels' key are also replaced when enclosed by ‘{}’. The standard labels are

    • tinfo: %H:%M

    • dtinfo: %B %d, %Y. %H:%M

    • dinfo: %B %d, %Y

    • desc: %(long_name)s [%(units)s]

    • sdesc: %(name)s [%(units)s]

Possible types

str

The text for the ylabel() function.

See also

ylabelsize, ylabelweight, ylabelprops

ylim

Set the y-axis limits

Possible types

None

To not change the current limits

str or list [str, str] or [[str, float], [str, float]]

Automatically determine the ticks corresponding to the data. The given string determines how the limits are calculated. The float determines the percentile to use A string can be one of the following:

rounded

Sets the minimum and maximum of the limits to the rounded data minimum or maximum. Limits are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimum will always be lower or equal than the data minimum, the maximum will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the limits are chosen such that they are symmetric around zero

minmax

Uses the minimum and maximum

sym

Same as minmax but symmetric around zero

tuple (xmin, xmax)

xmin is the smaller value, xmax the larger. Any of those values can be None or one of the strings (or lists) above to use the corresponding value here

See also

xlim

yrotation

Rotate the y-axis ticks

Possible types

float

The rotation angle in degrees

See also

xrotation

yticklabels

Modify the y-axis ticklabels

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

str

A formatstring like '%Y' for plotting the year (in the case that time is shown on the axis) or ‘%i’ for integers

array

An array of strings to use for the ticklabels

ytickprops

Specify the y-axis tick parameters

This formatoption can be used to make a detailed change of the ticks parameters of the y-axis.

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

dict

Items may be anything of the matplotlib.pyplot.tick_params() function

yticks

Modify the y-axis ticks

Possible types

dict

A dictionary with the keys 'minor' and (or) 'major' to specify which ticks are managed. If the given value is not a dictionary with those keys, it is put into a dictionary with the key determined by the rcParams 'ticks.which' key (usually 'major'). The values in the dictionary can be one types below.

None

use the default ticks

int

for an integer i, only every i-th tick of the default ticks are used

numeric array

specifies the ticks manually

str or list [str, …]

A list of the below mentioned values of the mapping like [method, N, percmin, percmax, vmin, vmax], where only the first one is absolutely necessary

dict

Automatically determine the ticks corresponding to the data. The mapping can have the following keys, but only method is not optional.

N

An integer describing the number of boundaries (or ticks per power of ten, see log and symlog above)

percmin

The percentile to use for the minimum (by default, 0, i.e. the minimum of the array)

percmax

The percentile to use for the maximum (by default, 100, i.e. the maximum of the array)

vmin

The minimum to use (in which case it is not calculated from the specified method)

vmax

The maximum to use (in which case it is not calculated from the specified method)

method

A string that defines how minimum and maximum shall be set. This argument is not optional and can be one of the following:

data

plot the ticks exactly where the data is.

mid

plot the ticks in the middle of the data.

rounded

Sets the minimum and maximum of the ticks to the rounded data minimum or maximum. Ticks are rounded to the next 0.5 value with to the difference between data max- and minimum. The minimal tick will always be lower or equal than the data minimum, the maximal tick will always be higher or equal than the data maximum.

roundedsym

Same as rounded above but the ticks are chose such that they are symmetric around zero

minmax

Uses the minimum as minimal tick and maximum as maximal tick

sym

Same as minmax but symmetric around zero

log

Use logarithmic bounds. In this case, the given number N determines the number of bounds per power of tenth (i.e. N == 2 results in something like 1.0, 5.0, 10.0, 50.0, etc., If this second number is None, then it will be chosen such that we have around 11 boundaries but at least one per power of ten.

symlog

The same as log but symmetric around 0. If the number N is None, then we have around 12 boundaries but at least one per power of ten

hour

draw ticks every hour

day

draw ticks every day

week

draw ticks every week

month, monthend, monthbegin

draw ticks in the middle, at the end or at the beginning of each month

year, yearend, yearbegin

draw ticks in the middle, at the end or at the beginning of each year

For data, mid, hour, day, week, month, etc., the optional second value can be an integer i determining that every i-th data point shall be used (by default, it is set to 1). For rounded, roundedsym, minmax and sym, the second value determines the total number of ticks (defaults to 11).

See also

yticklabels, ticksize, tickweight, ytickprops

xticks

for possible examples

class psy_transect.plotters.VerticalTransectTranspose(*args, **kwargs)

Bases: Transpose

Methods:

get_x(arr)

get_y(arr)

get_x(arr)
get_y(arr)