ax.plot¶
Rendering¶
Plots¶
Base¶
-
class
ax.plot.base.AxPlotTypes[source]¶ Bases:
enum.EnumEnum of Ax plot types.
-
BANDIT_ROLLOUT= 4¶
-
CONTOUR= 0¶
-
GENERIC= 1¶
-
HTML= 6¶
-
INTERACT_CONTOUR= 3¶
-
INTERACT_SLICE= 5¶
-
SLICE= 2¶
-
-
class
ax.plot.base.PlotData[source]¶ Bases:
tupleStruct for plot data, including both in-sample and out-of-sample arms
-
property
in_sample¶ Alias for field number 1
-
property
metrics¶ Alias for field number 0
-
property
out_of_sample¶ Alias for field number 2
-
property
status_quo_name¶ Alias for field number 3
-
property
-
class
ax.plot.base.PlotInSampleArm[source]¶ Bases:
tupleStruct for in-sample arms (both observed and predicted data)
-
property
context_stratum¶ Alias for field number 6
-
property
name¶ Alias for field number 0
-
property
parameters¶ Alias for field number 1
-
property
se¶ Alias for field number 4
-
property
se_hat¶ Alias for field number 5
-
property
y¶ Alias for field number 2
-
property
y_hat¶ Alias for field number 3
-
property
-
class
ax.plot.base.PlotMetric[source]¶ Bases:
tupleStruct for metric
-
property
metric¶ Alias for field number 0
-
property
pred¶ Alias for field number 1
-
property
rel¶ Alias for field number 2
-
property
-
class
ax.plot.base.PlotOutOfSampleArm[source]¶ Bases:
tupleStruct for out-of-sample arms (only predicted data)
-
property
context_stratum¶ Alias for field number 4
-
property
name¶ Alias for field number 0
-
property
parameters¶ Alias for field number 1
-
property
se_hat¶ Alias for field number 3
-
property
y_hat¶ Alias for field number 2
-
property
Bandit Rollout¶
Contour Plot¶
-
ax.plot.contour.interact_contour(model, metric_name, generator_runs_dict=None, relative=False, density=50, slice_values=None, lower_is_better=False, fixed_features=None, trial_index=None)[source]¶ Create interactive plot with predictions for a 2-d slice of the parameter space.
- Parameters
model (
ModelBridge) – ModelBridge that contains model for predictionsmetric_name (
str) – Name of metric to plotgenerator_runs_dict (
Optional[Dict[str,GeneratorRun]]) – A dictionary {name: generator run} of generator runs whose arms will be plotted, if they lie in the slice.relative (
bool) – Predictions relative to status quodensity (
int) – Number of points along slice to evaluate predictions.slice_values (
Optional[Dict[str,Any]]) – A dictionary {name: val} for the fixed values of the other parameters. If not provided, then the status quo values will be used if there is a status quo, otherwise the mean of numeric parameters or the mode of choice parameters.lower_is_better (
bool) – Lower values for metric are better.fixed_features (
Optional[ObservationFeatures]) – An ObservationFeatures object containing the values of features (including non-parameter features like context) to be set in the slice.
- Return type
-
ax.plot.contour.plot_contour(model, param_x, param_y, metric_name, generator_runs_dict=None, relative=False, density=50, slice_values=None, lower_is_better=False, fixed_features=None, trial_index=None)[source]¶ Plot predictions for a 2-d slice of the parameter space.
- Parameters
model (
ModelBridge) – ModelBridge that contains model for predictionsparam_x (
str) – Name of parameter that will be sliced on x-axisparam_y (
str) – Name of parameter that will be sliced on y-axismetric_name (
str) – Name of metric to plotgenerator_runs_dict (
Optional[Dict[str,GeneratorRun]]) – A dictionary {name: generator run} of generator runs whose arms will be plotted, if they lie in the slice.relative (
bool) – Predictions relative to status quodensity (
int) – Number of points along slice to evaluate predictions.slice_values (
Optional[Dict[str,Any]]) – A dictionary {name: val} for the fixed values of the other parameters. If not provided, then the status quo values will be used if there is a status quo, otherwise the mean of numeric parameters or the mode of choice parameters.lower_is_better (
bool) – Lower values for metric are better.fixed_features (
Optional[ObservationFeatures]) – An ObservationFeatures object containing the values of features (including non-parameter features like context) to be set in the slice.
- Return type
Feature Importances¶
-
ax.plot.feature_importances.plot_feature_importance_by_feature(model, relative=True)[source]¶ One plot per metric, showing importances by feature.
- Return type
-
ax.plot.feature_importances.plot_feature_importance_by_metric(model)[source]¶ One plot per feature, showing importances by metric.
- Return type
Marginal Effects¶
-
ax.plot.marginal_effects.plot_marginal_effects(model, metric)[source]¶ Calculates and plots the marginal effects – the effect of changing one factor away from the randomized distribution of the experiment and fixing it at a particular level.
- Parameters
model (
ModelBridge) – Model to use for estimating effectsmetric (
str) – The metric for which to plot marginal effects.
- Return type
- Returns
AxPlotConfig of the marginal effects
Model Diagnostics¶
-
ax.plot.diagnostic.interact_batch_comparison(observations, experiment, batch_x, batch_y, rel=False, status_quo_name=None)[source]¶ Compare repeated arms from two trials; select metric via dropdown.
- Parameters
- Return type
-
ax.plot.diagnostic.interact_cross_validation(cv_results, show_context=True)[source]¶ Interactive cross-validation (CV) plotting; select metric via dropdown.
Note: uses the Plotly version of dropdown (which means that all data is stored within the notebook).
- Parameters
- Return type
-
ax.plot.diagnostic.interact_empirical_model_validation(batch, data)[source]¶ Compare the model predictions for the batch arms against observed data.
Relies on the model predictions stored on the generator_runs of batch.
- Parameters
batch (
BatchTrial) – Batch on which to perform analysis.data (
Data) – Observed data for the batch.
- Return type
- Returns
AxPlotConfig for the plot.
-
ax.plot.diagnostic.tile_cross_validation(cv_results, show_arm_details_on_hover=True, show_context=True)[source]¶ Tile version of CV plots; sorted by ‘best fitting’ outcomes.
Plots are sorted in decreasing order using the p-value of a Fisher exact test statistic.
Pareto Plots¶
-
ax.plot.pareto_frontier.interact_pareto_frontier(frontier_list, CI_level=0.9, show_parameterization_on_hover=True)[source]¶ Plot a pareto frontier from a list of objects
- Return type
-
ax.plot.pareto_frontier.plot_pareto_frontier(frontier, CI_level=0.9, show_parameterization_on_hover=True)[source]¶ Plot a Pareto frontier from a ParetoFrontierResults object.
- Parameters
frontier (ParetoFrontierResults) – The results of the Pareto frontier computation.
CI_level (float, optional) – The confidence level, i.e. 0.95 (95%)
show_parameterization_on_hover (bool, optional) – If True, show the parameterization of the points on the frontier on hover.
- Returns
The resulting Plotly plot definition.
- Return type
AEPlotConfig
-
class
ax.plot.pareto_utils.COLORS[source]¶ Bases:
enum.EnumAn enumeration.
-
CORAL= (251, 128, 114)¶
-
LIGHT_PURPLE= (190, 186, 218)¶
-
ORANGE= (253, 180, 98)¶
-
PINK= (188, 128, 189)¶
-
STEELBLUE= (128, 177, 211)¶
-
TEAL= (141, 211, 199)¶
-
-
class
ax.plot.pareto_utils.ParetoFrontierResults[source]¶ Bases:
tupleContainer for results from Pareto frontier computation.
-
property
absolute_metrics¶ Alias for field number 5
-
property
means¶ Alias for field number 1
-
property
outcome_constraints¶ Alias for field number 6
-
property
param_dicts¶ Alias for field number 0
-
property
primary_metric¶ Alias for field number 3
-
property
secondary_metric¶ Alias for field number 4
-
property
sems¶ Alias for field number 2
-
property
-
ax.plot.pareto_utils.compute_pareto_frontier(experiment, primary_objective, secondary_objective, data=None, outcome_constraints=None, absolute_metrics=None, num_points=10, trial_index=None, chebyshev=True)[source]¶ Compute the Pareto frontier between two objectives. For experiments with batch trials, a trial index must be provided.
- Parameters
experiment (
Experiment) – The experiment to compute a pareto frontier for.primary_objective (
Metric) – The primary objective to optimize.secondary_objective (
Metric) – The secondary objective against which to trade off the primary objective.outcome_constraints (
Optional[List[OutcomeConstraint]]) – Outcome constraints to be respected by the optimization. Can only contain constraints on metrics that are not primary or secondary objectives.absolute_metrics (
Optional[List[str]]) – List of outcome metrics that should NOT be relativized w.r.t. the status quo (all other outcomes will be in % relative to status_quo).num_points (
int) – The number of points to compute on the Pareto frontier.chebyshev (
bool) – Whether to use augmented_chebyshev_scalarization when computing Pareto Frontier points.
- Returns
- A NamedTuple with the following fields:
- param_dicts: The parameter dicts of the
points generated on the Pareto Frontier.
- means: The posterior mean predictions of
the model for each metric (same order as the param dicts).
- sems: The posterior sem predictions of
the model for each metric (same order as the param dicts).
primary_metric: The name of the primary metric.
secondary_metric: The name of the secondary metric.
- absolute_metrics: List of outcome metrics that
are NOT be relativized w.r.t. the status quo (all other metrics are in % relative to status_quo).
- Return type
Scatter Plots¶
-
ax.plot.scatter.interact_fitted(model, generator_runs_dict=None, rel=True, show_arm_details_on_hover=True, show_CI=True, arm_noun='arm', metrics=None, fixed_features=None)[source]¶ Interactive fitted outcome plots for each arm used in fitting the model.
Choose the outcome to plot using a dropdown.
- Parameters
model (
ModelBridge) – model to use for predictions.generator_runs_dict (
Optional[Dict[str,GeneratorRun]]) – a mapping from generator run name to generator run.rel (
bool) – if True, use relative effects. Default is True.show_arm_details_on_hover (
bool) – if True, display parameterizations of arms on hover. Default is True.show_CI (
bool) – if True, render confidence intervals.arm_noun (
str) – noun to use instead of “arm” (e.g. group)metrics (
Optional[List[str]]) – List of metric names to restrict to when plotting.fixed_features (
Optional[ObservationFeatures]) – Fixed features to use when making model predictions.
- Return type
-
ax.plot.scatter.lattice_multiple_metrics(model, generator_runs_dict=None, rel=True, show_arm_details_on_hover=False)[source]¶ Plot raw values or predictions of combinations of two metrics for arms.
- Parameters
model (
ModelBridge) – model to draw predictions from.generator_runs_dict (
Optional[Dict[str,GeneratorRun]]) – a mapping from generator run name to generator run.rel (
bool) – if True, use relative effects. Default is True.show_arm_details_on_hover (
bool) – if True, display parameterizations of arms on hover. Default is False.
- Return type
-
ax.plot.scatter.plot_fitted(model, metric, generator_runs_dict=None, rel=True, custom_arm_order=None, custom_arm_order_name='Custom', show_CI=True)[source]¶ Plot fitted metrics.
- Parameters
model (
ModelBridge) – model to use for predictions.metric (
str) – metric to plot predictions for.generator_runs_dict (
Optional[Dict[str,GeneratorRun]]) – a mapping from generator run name to generator run.rel (
bool) – if True, use relative effects. Default is True.custom_arm_order (
Optional[List[str]]) – a list of arm names in the order corresponding to how they should be plotted on the x-axis. If not None, this is the default ordering.custom_arm_order_name (
str) – name for custom ordering to show in the ordering dropdown. Default is ‘Custom’.show_CI (
bool) – if True, render confidence intervals.
- Return type
-
ax.plot.scatter.plot_multiple_metrics(model, metric_x, metric_y, generator_runs_dict=None, rel=True)[source]¶ Plot raw values or predictions of two metrics for arms.
All arms used in the model are included in the plot. Additional arms can be passed through the generator_runs_dict argument.
- Parameters
model (
ModelBridge) – model to draw predictions from.metric_x (
str) – metric to plot on the x-axis.metric_y (
str) – metric to plot on the y-axis.generator_runs_dict (
Optional[Dict[str,GeneratorRun]]) – a mapping from generator run name to generator run.rel (
bool) – if True, use relative effects. Default is True.
- Return type
-
ax.plot.scatter.plot_objective_vs_constraints(model, objective, subset_metrics=None, generator_runs_dict=None, rel=True, infer_relative_constraints=False, fixed_features=None)[source]¶ Plot the tradeoff between an objetive and all other metrics in a model.
All arms used in the model are included in the plot. Additional arms can be passed through via the generator_runs_dict argument.
Fixed features input can be used to override fields of the insample arms when making model predictions.
- Parameters
model (
ModelBridge) – model to draw predictions from.objective (
str) – metric to optimize. Plotted on the x-axis.subset_metrics (
Optional[List[str]]) – list of metrics to plot on the y-axes if need a subset of all metrics in the model.generator_runs_dict (
Optional[Dict[str,GeneratorRun]]) – a mapping from generator run name to generator run.rel (
bool) – if True, use relative effects. Default is True.infer_relative_constraints (
Optional[bool]) – if True, read relative spec from model’s optimization config. Absolute constraints will not be relativized; relative ones will be. Objectives will respect the rel parameter. Metrics that are not constraints will be relativized.fixed_features (
Optional[ObservationFeatures]) – Fixed features to use when making model predictions.
- Return type
-
ax.plot.scatter.tile_fitted(model, generator_runs_dict=None, rel=True, show_arm_details_on_hover=False, show_CI=True, arm_noun='arm', metrics=None, fixed_features=None)[source]¶ Tile version of fitted outcome plots.
- Parameters
model (
ModelBridge) – model to use for predictions.generator_runs_dict (
Optional[Dict[str,GeneratorRun]]) – a mapping from generator run name to generator run.rel (
bool) – if True, use relative effects. Default is True.show_arm_details_on_hover (
bool) – if True, display parameterizations of arms on hover. Default is False.show_CI (
bool) – if True, render confidence intervals.arm_noun (
str) – noun to use instead of “arm” (e.g. group)metrics (
Optional[List[str]]) – List of metric names to restrict to when plotting.fixed_features (
Optional[ObservationFeatures]) – Fixed features to use when making model predictions.
- Return type
Slice Plot¶
-
ax.plot.slice.interact_slice(model, param_name, metric_name='', generator_runs_dict=None, relative=False, density=50, slice_values=None, fixed_features=None, trial_index=None)[source]¶ Create interactive plot with predictions for a 1-d slice of the parameter space.
- Parameters
model (
ModelBridge) – ModelBridge that contains model for predictionsparam_name (
str) – Name of parameter that will be slicedmetric_name (
str) – Name of metric to plotgenerator_runs_dict (
Optional[Dict[str,GeneratorRun]]) – A dictionary {name: generator run} of generator runs whose arms will be plotted, if they lie in the slice.relative (
bool) – Predictions relative to status quodensity (
int) – Number of points along slice to evaluate predictions.slice_values (
Optional[Dict[str,Any]]) – A dictionary {name: val} for the fixed values of the other parameters. If not provided, then the status quo values will be used if there is a status quo, otherwise the mean of numeric parameters or the mode of choice parameters. Ignored if fixed_features is specified.fixed_features (
Optional[ObservationFeatures]) – An ObservationFeatures object containing the values of features (including non-parameter features like context) to be set in the slice.
- Return type
-
ax.plot.slice.plot_slice(model, param_name, metric_name, generator_runs_dict=None, relative=False, density=50, slice_values=None, fixed_features=None, trial_index=None)[source]¶ Plot predictions for a 1-d slice of the parameter space.
- Parameters
model (
ModelBridge) – ModelBridge that contains model for predictionsparam_name (
str) – Name of parameter that will be slicedmetric_name (
str) – Name of metric to plotgenerator_runs_dict (
Optional[Dict[str,GeneratorRun]]) – A dictionary {name: generator run} of generator runs whose arms will be plotted, if they lie in the slice.relative (
bool) – Predictions relative to status quodensity (
int) – Number of points along slice to evaluate predictions.slice_values (
Optional[Dict[str,Any]]) – A dictionary {name: val} for the fixed values of the other parameters. If not provided, then the status quo values will be used if there is a status quo, otherwise the mean of numeric parameters or the mode of choice parameters. Ignored if fixed_features is specified.fixed_features (
Optional[ObservationFeatures]) – An ObservationFeatures object containing the values of features (including non-parameter features like context) to be set in the slice.
- Return type
Table¶
Trace Plots¶
-
ax.plot.trace.mean_trace_scatter(y, trace_color=(128, 177, 211), legend_label='mean', hover_labels=None)[source]¶ Creates a graph object for trace of the mean of the given series across runs.
- Parameters
y (
ndarray) – (r x t) array with results from r runs and t trials.trace_color (
Tuple[int]) – tuple of 3 int values representing an RGB color. Defaults to blue.legend_label (
str) – label for this trace.hover_labels (
Optional[List[str]]) – optional, text to show on hover; list where the i-th value corresponds to the i-th value in the value of the y argument.
- Returns
plotly graph object
- Return type
go.Scatter
-
ax.plot.trace.model_transitions_scatter(model_transitions, y_range, generator_change_color=(141, 211, 199))[source]¶ Creates a graph object for the line(s) representing generator changes.
- Parameters
- Returns
- plotly graph objects for the lines representing generator
changes
- Return type
go.Scatter
-
ax.plot.trace.optimization_times(fit_times, gen_times, title='')[source]¶ Plots wall times for each method as a bar chart.
- Parameters
Returns: AxPlotConfig with the plot
- Return type
-
ax.plot.trace.optimization_trace_all_methods(y_dict, optimum=None, title='', ylabel='', hover_labels=None, trace_colors=[(128, 177, 211), (251, 128, 114), (141, 211, 199), (188, 128, 189), (190, 186, 218), (253, 180, 98)], optimum_color=(253, 180, 98))[source]¶ Plots a comparison of optimization traces with 2-SEM bands for multiple methods on the same problem.
- Parameters
y – a mapping of method names to (r x t) arrays, where r is the number of runs in the test, and t is the number of trials.
title (
str) – title for this plot.ylabel (
str) – label for the Y-axis.hover_labels (
Optional[List[str]]) – optional, text to show on hover; list where the i-th value corresponds to the i-th value in the value of the y argument.trace_colors (
List[Tuple[int]]) – tuples of 3 int values representing RGB colors to use for different methods shown in the combination plot. Defaults to Ax discrete color scale.optimum_color (
Tuple[int]) – tuple of 3 int values representing an RGB color. Defaults to orange.
- Returns
plot of the comparison of optimization traces with IQR
- Return type
-
ax.plot.trace.optimization_trace_single_method(y, optimum=None, model_transitions=None, title='', ylabel='', hover_labels=None, trace_color=(128, 177, 211), optimum_color=(253, 180, 98), generator_change_color=(141, 211, 199))[source]¶ Plots an optimization trace with mean and 2 SEMs
- Parameters
y (
ndarray) – (r x t) array; result to plot, with r runs and t trialsmodel_transitions (
Optional[List[int]]) – iterations, before which generators changedtitle (
str) – title for this plot.ylabel (
str) – label for the Y-axis.hover_labels (
Optional[List[str]]) – optional, text to show on hover; list where the i-th value corresponds to the i-th value in the value of the y argument.trace_color (
Tuple[int]) – tuple of 3 int values representing an RGB color. Defaults to orange.optimum_color (
Tuple[int]) – tuple of 3 int values representing an RGB color. Defaults to orange.generator_change_color (
Tuple[int]) – tuple of 3 int values representing an RGB color. Defaults to orange.
- Returns
plot of the optimization trace with IQR
- Return type
-
ax.plot.trace.optimum_objective_scatter(optimum, num_iterations, optimum_color=(253, 180, 98))[source]¶ Creates a graph object for the line representing optimal objective.
- Parameters
- Returns
plotly graph objects for the optimal objective line
- Return type
go.Scatter
Plotting Utilities¶
-
class
ax.plot.color.COLORS[source]¶ Bases:
enum.EnumAn enumeration.
-
CORAL= (251, 128, 114)¶
-
LIGHT_PURPLE= (190, 186, 218)¶
-
ORANGE= (253, 180, 98)¶
-
PINK= (188, 128, 189)¶
-
STEELBLUE= (128, 177, 211)¶
-
TEAL= (141, 211, 199)¶
-
-
ax.plot.color.plotly_color_scale(list_of_rgb_tuples, reverse=False, alpha=1)[source]¶ Convert list of RGB tuples to list of tuples, where each tuple is break in [0, 1] and stringified RGBA color.
-
ax.plot.exp_utils.exp_to_df(exp, metrics=None, key_components=None, **kwargs)[source]¶ Transforms an experiment to a DataFrame. Only supports Experiment and SimpleExperiment.
Transforms an Experiment into a dataframe with rows keyed by trial_index and arm_name, metrics pivoted into one row.
- Parameters
exp (
Experiment) – An Experiment that may have pending trials.metrics (
Optional[List[Metric]]) – Override list of metrics to return. Return all metrics if None.key_components (
Optional[List[str]]) – fields that combine to make a unique key corresponding to rows, similar to the list of fields passed to a GROUP BY. Defaults to [‘arm_name’, ‘trial_index’].**kwargs – Custom named arguments, useful for passing complex objects from call-site to the fetch_data callback.
- Returns
A dataframe of inputs and metrics by trial and arm.
- Return type
DataFrame
-
ax.plot.helper.get_fixed_values(model, slice_values=None, trial_index=None)[source]¶ Get fixed values for parameters in a slice plot.
If there is an in-design status quo, those values will be used. Otherwise, the mean of RangeParameters or the mode of ChoiceParameters is used.
Any value in slice_values will override the above.
- Parameters
model (
ModelBridge) – ModelBridge being used for plottingslice_values (
Optional[Dict[str,Any]]) – Map from parameter name to value at which is should be fixed.
Returns: Map from parameter name to fixed value.
-
ax.plot.helper.get_grid_for_parameter(parameter, density)[source]¶ Get a grid of points along the range of the parameter.
Will be a log-scale grid if parameter is log scale.
- Parameters
parameter (
RangeParameter) – Parameter for which to generate grid.density (
int) – Number of points in the grid.
- Return type
ndarray
-
ax.plot.helper.get_plot_data(model, generator_runs_dict, metric_names=None, fixed_features=None)[source]¶ Format data object with metrics for in-sample and out-of-sample arms.
Calculate both observed and predicted metrics for in-sample arms. Calculate predicted metrics for out-of-sample arms passed via the generator_runs_dict argument.
In PlotData, in-sample observations are merged with IVW. In RawData, they are left un-merged and given as a list of dictionaries, one for each observation and having keys ‘arm_name’, ‘mean’, and ‘sem’.
- Parameters
model (
ModelBridge) – The model.generator_runs_dict (
Dict[str,GeneratorRun]) – a mapping from generator run name to generator run.metric_names (
Optional[Set[str]]) – Restrict predictions to this set. If None, all metrics in the model will be returned.fixed_features (
Optional[ObservationFeatures]) – Fixed features to use when making model predictions.
- Return type
Tuple[PlotData,List[Dict[str,Union[str,float]]],Dict[str,Dict[str,Union[str,bool,float,int,None]]]]- Returns
A tuple containing
PlotData object with in-sample and out-of-sample predictions.
List of observations like:
{'metric_name': 'likes', 'arm_name': '0_1', 'mean': 1., 'sem': 0.1}.
Mapping from arm name to parameters.
-
ax.plot.helper.get_range_parameter(model, param_name)[source]¶ Get the range parameter with the given name from the model.
Throws if parameter doesn’t exist or is not a range parameter.
- Parameters
model (
ModelBridge) – The model.param_name (
str) – The name of the RangeParameter to be found.
Returns: The RangeParameter named param_name.
- Return type
-
ax.plot.helper.get_range_parameters(model)[source]¶ Get a list of range parameters from a model.
- Parameters
model (
ModelBridge) – The model.
Returns: List of RangeParameters.
- Return type