pypfilt.plot#
Several plotting routines, built on top of
matplotlib, are provided in the
pypilt.plot
module.
Note
matplotlib must be installed in order to use this module.
To generate plots non-interactively (i.e., without having a window appear) use
the 'Agg'
backend:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
See the matplotlib FAQ for more details.
Styles and colour palettes#
- pypfilt.plot.default_style()#
The style sheet provided by pypfilt.
- pypfilt.plot.apply_style(style=None)#
Temporarily apply a style sheet.
- Parameters:
style – The style sheet to apply (default:
default_style()
).
with apply_style(): make_plots()
- pypfilt.plot.n_colours(name, n)#
Extract a fixed number of colours from a colour map.
- Parameters:
name – The colour map name (or a
matplotlib.colors.Colormap
instance).n – The number of colours required.
colours = n_colours('Blues', 3)
- pypfilt.plot.brewer_qual(name)#
Qualitative palettes from the ColorBrewer project:
'Accent'
,'Dark2'
,'Paired'
,'Pastel1'
,'Pastel2'
,'Set1'
,'Set2'
,'Set3'
.- Raises:
ValueError – if the palette name is invalid.
- pypfilt.plot.colour_iter(col, palette, reverse=False)#
Iterate over the unique (sorted) values in an array, returning a
(value, colour)
tuple for each of the values.- Parameters:
col – The column of (unsorted, repeated) values.
palette – The colour map name or a list of colours.
reverse – Whether to sort the values in ascending (default) or descending order.
Plotting functions#
- pypfilt.plot.cred_ints(ax, data, x, ci, palette='Blues', **kwargs)#
Plot credible intervals as shaded regions.
- Parameters:
ax – The plot axes.
data – The NumPy array containing the credible intervals.
x – The name of the x-axis column.
ci – The name of the credible interval column.
palette – The colour map name or a list of colours.
**kwargs – Extra arguments to pass to Axes.plot and Axes.fill_between.
- Returns:
A list of the series that were plotted.
- pypfilt.plot.observations(ax, data, label='Observations', future=False, **kwargs)#
Plot observed values.
- Parameters:
ax – The plot axes.
data – The NumPy array containing the observation data.
label – The label for the observation data.
future – Whether the observations occur after the forecasting time.
**kwargs – Extra arguments to pass to Axes.plot.
- Returns:
A list of the series that were plotted.
- pypfilt.plot.series(ax, data, x, y, scales, legend_cols=True, **kwargs)#
Add multiple series to a single plot, each of which is styled according to values in other columns.
- Parameters:
ax – The axes on which to draw the line series.
data – The structured array that contains the data to plot.
x – The name of the column that corresponds to the x-axis.
y – The name of the column that corresponds to the y-axis.
scales –
A list of “scales” to apply to each line series; each scale is a tuple
(column, kwarg, kwvals, label_fmt)
where:column
is the name of a column indata
;kwarg
is the name of a keyword argument passed toplot()
;kwvals
is a list of values that the keyword argument will take; andlabel_fmt
is a format string for the legend keys or a function that returns the legend key.
legend_cols – Whether to show each scale in a separate column.
**kwargs – Extra arguments to pass to Axes.plot.
- Returns:
A list of the series that were plotted.
scales = [ # Colour lines according to the dispersion parameter. ('disp', 'color', brewer_qual('Set1'), r'$k = {:.0f}$'), # Vary line style according to the background signal. ('bg_obs', 'linestyle', ['-', '--', ':'], r'$bg_{{obs}} = {}$'), ] series(ax, data, 'x_col', 'y_col', scales)
Faceted plots#
This package provides a base class (Plot
) for plots that comprise
any number of subplots, and three subclasses for specific types of plots:
Wrap
for plots where a single variable identifies each subplot.Grid
for plots where two variables are used to identify each subplot.Single
for single plots.
The key method of these classes is Plot.subplots()
, which returns an
iterator that yields (axes, data)
tuples for each subplot.
By looping over these tuples, one set of plotting commands can be used to
generate all of the subplots.
For examples, see the plot_forecasts()
and plot_params()
functions in
the Plotting the results section of Getting Started.
- class pypfilt.plot.Plot(**kwargs)#
The base class for plots that comprise multiple subplots.
- Parameters:
**kwargs – Extra arguments to pass to pyplot.subplots.
- Variables:
fig – The
matplotlib.figure.Figure
instance for the plot.axs – The \(M \times N\) array of
matplotlib.axes.Axes
instances for each of the sub-plots (\(M\) rows and \(N\) columns).
- abstract subplots()#
Return an iterator that yields
(axes, data)
tuples for each subplot.
- add_to_legend(objs, replace=False)#
Add plot objects to the list of items to show in the figure legend.
- Parameters:
replace – Whether to ignore objects which share a label with any object already in this list (default) or to replace such objects (set to
True
).
- legend(**kwargs)#
Add a figure legend that lists the objects registered with
add_to_legend()
.- Parameters:
**kwargs – Extra arguments to pass to Figure.legend.
- set_xlabel(text, dy, **kwargs)#
Add an x-axis label that is centred across all subplots.
- Parameters:
text – The label text.
dy – The vertical position of the label.
**kwargs – Extra arguments to pass to Figure.text.
- set_ylabel(text, dx, **kwargs)#
Add an y-axis label that is centred across all subplots.
- Parameters:
text – The label text.
dx – The horizontal position of the label.
**kwargs – Extra arguments to pass to Figure.text.
- expand_x_lims(xs, pad_frac=0.05, pad_abs=None)#
Increase the range of the x-axis, relative to the plot data.
- Parameters:
xs – The x-axis data.
pad_frac – The fractional increase in range.
pad_abs – The absolute increase in range.
- expand_y_lims(ys, pad_frac=0.05, pad_abs=None)#
Increase the range of the y-axis, relative to the plot data.
- Parameters:
xs – The y-axis data.
pad_frac – The fractional increase in range.
pad_abs – The absolute increase in range.
- scale_x_date(lbl_fmt, day=None, month=None, year=None)#
Use a datetime scale to locate and label the x-axis ticks.
- Parameters:
lbl_fmt – The
strftime()
format string for tick labels.day – Locate ticks at every N days.
month – Locate ticks at every N months.
year – Locate ticks at every N years.
- Raises:
ValueError – unless exactly one of
day
,month
, andyear
is specified.
- scale_y_date(lbl_fmt, day=None, month=None, year=None)#
Use a datetime scale to locate and label the y-axis ticks.
- Parameters:
lbl_fmt – The
strftime()
format string for tick labels.day – Locate ticks at every N days.
month – Locate ticks at every N months.
year – Locate ticks at every N years.
- Raises:
ValueError – unless exactly one of
day
,month
, andyear
is specified.
- save(filename, format, width, height, **kwargs)#
Save the plot to disk (a thin wrapper for Figure.savefig).
- Parameters:
filename – The output filename or a Python file-like object.
format – The output format.
width – The figure width in inches.
height – The figure height in inches.
**kwargs – Extra arguments for
savefig
; the defaults aretransparent=False
andbbox_inches='tight'
.
- class pypfilt.plot.Wrap(data, xlbl, ylbl, fac, nr=None, nc=None, **kwargs)#
Faceted plots similar to those produced by ggplot2’s
facet_wrap()
.- Parameters:
data – The NumPy array containing the data to plot.
xlbl – The label for the x-axis.
ylbl – The label for the y-axis.
fac – The faceting variable, represented as a tuple
(column_name, label_fmt)
wherecolumn_name
is the name of a column indata
andlabel_fmt
is the format string for facet labels or a function that returns the facet label.nr – The number of rows; one of
nr
andnc
must be specified.nc – The number of columns; one of
nr
andnc
must be specified.**kwargs – Extra arguments for
Plot
.
- Raises:
ValueError – if
nr
andnc
are bothNone
or are both specified.
- expand_x_lims(col, pad_frac=0.05, pad_abs=None)#
Increase the range of the x-axis, relative to the plot data.
- Parameters:
col – The column name for the x-axis data.
pad_frac – The fractional increase in range.
pad_abs – The absolute increase in range.
- expand_y_lims(col, pad_frac=0.05, pad_abs=None)#
Increase the range of the y-axis, relative to the plot data.
- Parameters:
col – The column name for the y-axis data.
pad_frac – The fractional increase in range.
pad_abs – The absolute increase in range.
- subplots(hide_axes=False, dx=0.055, dy=0.025)#
Return an iterator that yields
(axes, data)
tuples for each subplot.- Parameters:
hide_axes – Whether to hide x and y axes that are not on their bottom or left edge, respectively, of the figure.
dx – The horizontal location for the y-axis label.
dy – The vertical location for the x-axis label.
- class pypfilt.plot.Grid(data, xlbl, ylbl, xfac, yfac, **kwargs)#
Faceted plots similar to those produced by ggplot2’s
facet_grid()
.- Parameters:
data – The NumPy array containing the data to plot.
xlbl – The label for the x-axis.
ylbl – The label for the y-axis.
xfac – The horizontal faceting variable, represented as a tuple
(column_name, label_fmt)
wherecolumn_name
is the name of a column indata
andlabel_fmt
is the format string for facet labels or a function that returns the facet label.yfac – The vertical faceting variable (see
xfac
).**kwargs – Extra arguments for
Plot
.
- expand_x_lims(col, pad_frac=0.05, pad_abs=None)#
Increase the range of the x-axis, relative to the plot data.
- Parameters:
col – The column name for the x-axis data.
pad_frac – The fractional increase in range.
pad_abs – The absolute increase in range.
- expand_y_lims(col, pad_frac=0.05, pad_abs=None)#
Increase the range of the y-axis, relative to the plot data.
- Parameters:
col – The column name for the y-axis data.
pad_frac – The fractional increase in range.
pad_abs – The absolute increase in range.
- subplots(hide_axes=False, dx=0.055, dy=0.025)#
Return an iterator that yields
(axes, data)
tuples for each subplot.- Parameters:
hide_axes – Whether to hide x and y axes that are not on their bottom or left edge, respectively, of the figure.
dx – The horizontal location for the y-axis label.
dy – The vertical location for the x-axis label.
For consistency, a class is also provided for single plots.
- class pypfilt.plot.Single(data, xlbl, ylbl, **kwargs)#
Faceted plots that contain only one sub-plot; i.e., a single plot that provides the same methods as faceted plots that contain many sub-plots.
- Parameters:
data – The NumPy array containing the data to plot.
xlbl – The label for the x-axis.
ylbl – The label for the y-axis.
**kwargs – Extra arguments for
Plot
.
- expand_x_lims(col, pad_frac=0.05, pad_abs=None)#
Increase the range of the x-axis, relative to the plot data.
- Parameters:
col – The column name for the x-axis data.
pad_frac – The fractional increase in range.
pad_abs – The absolute increase in range.
- expand_y_lims(col, pad_frac=0.05, pad_abs=None)#
Increase the range of the y-axis, relative to the plot data.
- Parameters:
col – The column name for the y-axis data.
pad_frac – The fractional increase in range.
pad_abs – The absolute increase in range.
- subplots(hide_axes=False, dx=0.055, dy=0.025)#
Return an iterator that yields
(axes, data)
tuples for each subplot.- Parameters:
hide_axes – Whether to hide x and y axes that are not on their bottom or left edge, respectively, of the figure.
dx – The horizontal location for the y-axis label.
dy – The vertical location for the x-axis label.