optuna.visualization.matplotlib.plot_contour(study, params=None, *, target=None, target_name='Objective Value')[source]

Plot the parameter relationship as contour plot in a study with Matplotlib.

Note that, if a parameter contains missing values, a trial with missing values is not plotted.

See also

Please refer to optuna.visualization.plot_contour() for an example.


Output figures of this Matplotlib-based plot_contour() function would be different from those of the Plotly-based plot_contour().


The following code snippet shows how to plot the parameter relationship as contour plot.

import optuna

def objective(trial):
    x = trial.suggest_float("x", -100, 100)
    y = trial.suggest_categorical("y", [-1, 0, 1])
    return x ** 2 + y

sampler = optuna.samplers.TPESampler(seed=10)
study = optuna.create_study(sampler=sampler)
study.optimize(objective, n_trials=30)

optuna.visualization.matplotlib.plot_contour(study, params=["x", "y"])
  • study (Study) – A Study object whose trials are plotted for their target values.

  • params (list[str] | None) – Parameter list to visualize. The default is all parameters.

  • target (Callable[[FrozenTrial], float] | None) –

    A function to specify the value to display. If it is None and study is being used for single-objective optimization, the objective values are plotted.


    Specify this argument if study is being used for multi-objective optimization.

  • target_name (str) – Target’s name to display on the color bar.


A matplotlib.axes.Axes object.

Return type:



The colormap is reversed when the target argument isn’t None or direction of Study is minimize.


Added in v2.2.0 as an experimental feature. The interface may change in newer versions without prior notice. See https://github.com/optuna/optuna/releases/tag/v2.2.0.