code: def test_plot_objective_value_vs_trial_index(self) -> None:
      # Generate some trials with different model types, including batch trial.
      exp = get_branin_experiment(with_batch=True)
      exp.trials[0].mark_completed(unsafe=True)
      sobol = Models.SOBOL(search_space=exp.search_space)
      for _ in range(2):
          t = exp.new_trial(sobol.gen(1)).run()
          t.mark_completed()
      model = Models.GPEI(
          experiment=exp,
          data=exp.fetch_data(),
      )
      for _ in range(2):
          t = exp.new_trial(model.gen(1)).run()
          t.mark_completed()
      exp.fetch_data()
  
      # Create exp_df and add feasibility column.
      exp_df = exp_to_df(exp)
      exp_df["is_feasible"] = True
      exp_df.loc[0, "is_feasible"] = False
  
      # Assert that plot can be constructed successfully.
      plot = plot_objective_value_vs_trial_index(
          exp_df=exp_df,
          metric_colname=list(self.model.metric_names)[0],
          minimize=True,
          hover_data_colnames=["trial_index"],
      )
      self.assertIsInstance(plot, go.Figure)
  
      # Assert that plot can be constructed successfully
      # without feasibility and generation method columns.
      del exp_df["is_feasible"]
      del exp_df["generation_method"]
      plot = plot_objective_value_vs_trial_index(
          exp_df=exp_df,
          metric_colname=list(self.model.metric_names)[0],
          minimize=True,
          hover_data_colnames=["trial_index"],
      )
      self.assertIsInstance(plot, go.Figure)
  
file_path: Ax/ax/plot/tests/test_traces.py
imports: import numpy
  import plotly.graph_objects
  from ax.modelbridge.registry import Models
  from ax.plot.base import AxPlotConfig
  from ax.plot.trace import optimization_trace_single_method, optimization_trace_single_method_plotly, plot_objective_value_vs_trial_index
  from ax.service.utils.report_utils import exp_to_df
  from ax.utils.common.testutils import TestCase
  from ax.utils.testing.core_stubs import get_branin_experiment
  from ax.utils.testing.mock import fast_botorch_optimize
label_desc: Use image node_id 4 for calling the TracesTest obj's underlying member method code with example usage: obj.test_plot_objective_value_vs_trial_index() without return types