CurvePlotter¶
- class CurvePlotter(drawer)[source]¶
A plotter class to plot results from
CurveAnalysis
.CurvePlotter
plots results from curve fits, which includesRaw results as a scatter plot.
Processed results with standard deviations/confidence intervals.
Interpolated fit results from the curve analysis.
Confidence interval for the fit results.
A report on the performance of the fit.
Options
The following can be set using
set_options()
.- Options
Defined in the class
CurvePlotter
:plot_sigma (List[Tuple[float, float]])
Default value: [(1.0
,0.7
), (3.0
,0.3
)]A list of two number tuples showing the configuration to write confidence intervals for the fit curve. The first argument is the relative sigma (n_sigma), and the second argument is the transparency of the interval plot in[0, 1]
. Multiple n_sigma intervals can be drawn for the same curve.
Defined in the class
BasePlotter
:axis (Any)
Default value:None
Arbitrary object that can be used as a drawing canvas.subplots (Tuple[int, int])
Default value: (1
,1
)Number of rows and columns when the experimental result is drawn in the multiple windows.style (PlotStyle)
Default value: {}The style definition to use when plotting. This overwrites figure option custom_style set indrawer
. The default is an empty style object, and such the defaultdrawer
plotting style will be used.
Figure options
The following can be set using
set_figure_options()
.- Options
Defined in the class
CurvePlotter
:report_red_chi2_label (str)
Default value:"reduced-$\chi^2$"
The label for the reduced-chi squared entry of the fit report. Defaults to the Python string literal"reduced-$\\chi^2$"
, corresponding to the formatted string reduced-\(\chi^2\).
Defined in the class
BasePlotter
:xlabel (Union[str, List[str]])
Default value:None
X-axis label string of the output figure. If there are multiple columns in the canvas, this could be a list of labels.ylabel (Union[str, List[str]])
Default value:None
Y-axis label string of the output figure. If there are multiple rows in the canvas, this could be a list of labels.xlim (Union[Tuple[float, float], List[Tuple[float, float]])
Default value:None
Min and max value of the horizontal axis. If not provided, it is automatically scaled based on the input data points. If there are multiple columns in the canvas, this could be a list of xlims.ylim (Union[Tuple[float, float], List[Tuple[float, float]])
Default value:None
Min and max value of the vertical axis. If not provided, it is automatically scaled based on the input data points. If there are multiple rows in the canvas, this could be a list of ylims.xval_unit (Union[str, List[str]])
Default value:None
Unit of x values. No scaling prefix is needed here as this is controlled byxval_unit_scale
. If there are multiple columns in the canvas, this could be a list of xval_units.yval_unit (Union[str, List[str]])
Default value:None
Unit of y values. No scaling prefix is needed here as this is controlled byyval_unit_scale
. If there are multiple rows in the canvas, this could be a list of yval_units.xval_unit_scale (Union[bool, List[bool]])
Default value:True
Whether to add an SI unit prefix toxval_unit
if needed. For example, when the x values represent time andxval_unit="s"
,xval_unit_scale=True
adds an SI unit prefix to"s"
based on X values of plotted data. In the output figure, the prefix is automatically selected based on the maximum value in this axis. If your x values are in [1e-3, 1e-4], they are displayed as [1 ms, 10 ms]. By default, this option is set toTrue
. IfFalse
is provided, the axis numbers will be displayed in the scientific notation. If there are multiple columns in the canvas, this could be a list of xval_unit_scale.yval_unit_scale (Union[bool, List[bool]])
Default value:True
Whether to add an SI unit prefix toyval_unit
if needed. Seexval_unit_scale
for details. If there are multiple rows in the canvas, this could be a list of yval_unit_scale.xscale (str)
Default value:None
The scaling of the x-axis, such aslog
orlinear
.yscale (str)
Default value:None
The scaling of the y-axis, such aslog
orlinear
.figure_title (str)
Default value:None
Title of the figure. Defaults to None, i.e. nothing is shown.sharex (bool)
Default value:True
Set True to share x-axis ticks among sub-plots.sharey (bool)
Default value:True
Set True to share y-axis ticks among sub-plots.series_params (Dict[str, Dict[str, Any]])
Default value: {}A dictionary of parameters for each series. This is keyed on the name for each series. Sub-dictionary is expected to have the following three configurations, “canvas”, “color”, “symbol” and “label”; “canvas” is the integer index of axis (when multi-canvas plot is set), “color” is the color of the drawn graphics, “symbol” is the series marker style for scatter plots, and “label” is a user provided series label that appears in the legend.
Initialization
Create a new plotter instance.
- Parameters:
drawer (BaseDrawer) – The drawer to use when creating the figure.
Attributes
- figure_options¶
Figure options for the plotter and its drawer.
Figure options differ from normal options (
options
) in that the plotter passes figure options on to the drawer when creating a figure (whenfigure()
is called). This waydrawer
can draw an appropriate figure. An example of a figure option is the x-axis label.
- options¶
Options for the plotter.
Options for a plotter modify how the class generates a figure. This includes an optional axis object, being the drawer canvas. Make sure verify whether the option you want to set is in
options
orfigure_options
.
- series¶
Series names that have been added to this plotter.
- series_data¶
Data for series being plotted.
Series data includes data such as scatter points, interpolated fit values, and standard deviations. Series data is grouped by series name (
Union[str, int, float]
) and then by a data key (str
). Though series data can be accessed throughseries_data
, it is recommended to access them withdata_for()
anddata_exists_for()
as they allow for easier access to nested values and can handle multiple data keys in one query.- Returns:
A dictionary containing series data.
- supplementary_data¶
Additional data for the figure being plotted, that isn’t associated with a series.
Supplementary data includes text, fit reports, or other data that is associated with the figure but not an individual series. It is typically data additional to the direct results of an experiment.
Methods
- clear_series_data(series_name=None)¶
Clear series data for this plotter.
- Parameters:
series_name (str | int | float | None) – The series name identifying which data should be cleared. If None, all series data is cleared. Defaults to None.
- clear_supplementary_data()¶
Clears supplementary data.
- config()¶
Return the config dictionary for this drawing.
- Return type:
Dict
- data_exists_for(series_name, data_keys)¶
Returns whether the given data keys exist for the given series.
- Parameters:
series_name (str | int | float) – The name of the given series.
data_keys (str | List[str]) – The data keys to be checked.
- Returns:
True if all data keys have values assigned for the given series. False if at least one does not have a value assigned.
- Return type:
bool
- data_for(series_name, data_keys)¶
Returns data associated with the given series.
The returned tuple contains the data, associated with
data_keys
, in the same orders as they are provided. For example,plotter.set_series_data("seriesA", x=data.x, y=data.y, yerr=data.yerr) # The following calls are equivalent. x, y, yerr = plotter.data_for("seriesA", ["x", "y", "yerr"]) x, y, yerr = data.x, data.y, data.yerr # Retrieving a single data key returns a tuple. Note the comma after ``x``. x, = plotter.data_for("seriesA", "x")
data_for()
is intended to be used by sub-classes ofBasePlotter
when plotting in the_plot_figure()
method.- Parameters:
series_name (str | int | float) – The series name for the given series.
data_keys (str | List[str]) – List of data keys for the data to be returned. If a single data key is given as a string, it is wrapped in a list.
- Returns:
A tuple of data associated with the given series, identified by
data_keys
. If no data has been set for a data key, None is returned for the associated tuple entry.- Return type:
Tuple[Any | None]
- data_keys_for(series_name)¶
Returns a list of data keys for the given series.
- Parameters:
series_name (str | int | float) – The series name for which to return the data keys, i.e., the types of data for each series.
- Returns:
The list of data keys for data in the plotter associated with the given series. If the series has not been added to the plotter, an empty list is returned.
- Return type:
List[str]
- classmethod expected_series_data_keys()[source]¶
Returns the expected series data keys supported by this plotter.
- Data Keys:
x – X-values for raw results.
y – Y-values for raw results. Goes with
x
.x_formatted – X-values for processed results.
y_formatted – Y-values for processed results. Goes with
x_formatted
.y_formatted_err – Error in
y_formatted
, to be plotted as error-bars.x_interp – Interpolated X-values for a curve fit.
y_interp – Y-values corresponding to the fit for
y_interp
X-values.y_interp_err – The standard deviations of the fit for each X-value in
y_interp
. This data key relates to the optionplot_sigma
.x_residuals – The X-values for the residual plot.
y_residuals – The residual from the fitting.
- Return type:
List[str]
- classmethod expected_supplementary_data_keys()[source]¶
Returns the expected figures data keys supported by this plotter.
This plotter generates a single text box, i.e. fit report, by digesting the provided supplementary data. The style and position of the report is controlled by
textbox_rel_pos
andtextbox_text_size
style parameters inPlotStyle
.- Data Keys:
primary_results – A list of
AnalysisResultData
objects to be shown in the fit report window. Typically, these are fit parameter values or secondary quantities computed from multiple fit parameters.fit_red_chi – The best reduced-chi squared value of the fit curves. If the fit consists of multiple sub-fits, this will be a dictionary keyed on the analysis name. Otherwise, this is a single float value of a particular analysis.
- Return type:
List[str]
- figure()¶
Generates and returns a figure for the already provided series and supplementary data.
figure()
calls_plot_figure()
, which is overridden by sub-classes. Before and after calling_plot_figure()
;_configure_drawer()
,initialize_canvas()
andformat_canvas()
are called on the drawer respectively.- Returns:
A figure generated by
drawer
, of the same type asdrawer.figure
.- Return type:
Any
- set_figure_options(**fields)¶
Set the figure options.
- Parameters:
fields – The fields to update in figure options.
- set_options(**fields)¶
Set the plotter options.
- Parameters:
fields – The fields to update in options.
- Raises:
AttributeError – If an unknown option is encountered.
- set_series_data(series_name, **data_kwargs)¶
Sets data for the given series.
Note that if data has already been assigned for the given series and data key, it will be overwritten with the new values.
set_series_data
will warn if the data key is unexpected; i.e., not within those returned byexpected_series_data_keys()
.- Parameters:
series_name (str | int | float) – The name of the given series.
data_kwargs – The data to be added, where the keyword is the data key.
- set_supplementary_data(**data_kwargs)¶
Sets supplementary data for the plotter.
Supplementary data differs from series data in that it is not associate with a series name. Fit reports are examples of supplementary data as they contain fit results from an analysis class, such as the “goodness” of a curve fit.
Note that if data has already been assigned for the given data key, it will be overwritten with the new values.
set_supplementary_data
will warn if the data key is unexpected; i.e., not within those returned byexpected_supplementary_data_keys()
.