code: def _get_pareto_front_plot(info: _ParetoFrontInfo) -> "go.Figure":
      include_dominated_trials = info.include_dominated_trials
      has_constraints_func = info.has_constraints_func
      if not has_constraints_func:
          data = [
              _make_scatter_object(
                  info.n_targets,
                  info.axis_order,
                  include_dominated_trials,
                  info.non_best_trials_with_values,
                  hovertemplate="%{text}<extra>Trial</extra>",
                  dominated_trials=True,
              ),
              _make_scatter_object(
                  info.n_targets,
                  info.axis_order,
                  include_dominated_trials,
                  info.best_trials_with_values,
                  hovertemplate="%{text}<extra>Best Trial</extra>",
                  dominated_trials=False,
              ),
          ]
      else:
          data = [
              _make_scatter_object(
                  info.n_targets,
                  info.axis_order,
                  include_dominated_trials,
                  info.infeasible_trials_with_values,
                  hovertemplate="%{text}<extra>Infeasible Trial</extra>",
                  infeasible=True,
              ),
              _make_scatter_object(
                  info.n_targets,
                  info.axis_order,
                  include_dominated_trials,
                  info.non_best_trials_with_values,
                  hovertemplate="%{text}<extra>Feasible Trial</extra>",
                  dominated_trials=True,
              ),
              _make_scatter_object(
                  info.n_targets,
                  info.axis_order,
                  include_dominated_trials,
                  info.best_trials_with_values,
                  hovertemplate="%{text}<extra>Best Trial</extra>",
                  dominated_trials=False,
              ),
          ]
  
      if info.n_targets == 2:
          layout = go.Layout(
              title="Pareto-front Plot",
              xaxis_title=info.target_names[info.axis_order[0]],
              yaxis_title=info.target_names[info.axis_order[1]],
          )
      else:
          layout = go.Layout(
              title="Pareto-front Plot",
              scene={
                  "xaxis_title": info.target_names[info.axis_order[0]],
                  "yaxis_title": info.target_names[info.axis_order[1]],
                  "zaxis_title": info.target_names[info.axis_order[2]],
              },
          )
      return go.Figure(data=data, layout=layout)
  
imports: from __future__ import annotations
  from collections.abc import Callable
  from collections.abc import Sequence
  from typing import Any
  from typing import NamedTuple
  import warnings
  import optuna
  from optuna.exceptions import ExperimentalWarning
  from optuna.study import Study
  from optuna.study._multi_objective import _get_pareto_front_trials_by_trials
  from optuna.trial import FrozenTrial
  from optuna.trial import TrialState
  from optuna.visualization._plotly_imports import _imports
  from optuna.visualization._utils import _make_hovertext
label_desc: Use image node_id 2 for calling a global function with example usage: _get_pareto_front_plot(info) and returns: go