code: def _draw_boxplot_plotly(
      self, target, box_df, line_df, box_color, fig, grids
  ):
      box_style = self.plot_style.box
      _, ys = self._prepare_box_data(box_df)
      for i, y in enumerate(ys):
          fig.add_trace(
              go.Box(
                  x0=i,
                  y=y,
                  width=box_style["width"],
                  marker=dict(
                      color=box_color,
                      opacity=box_style["alpha"],
                  ),
                  boxpoints=False,
                  name=target,
                  hoverinfo="none",
              ),
              **grids,
          )
      self._draw_lineplot_plotly(
          target, line_df, box_color, fig, grids, y2=False
      )
  
imports: from .styles import _prepare_plot_style, _axes_modify, _display_percentile, _modify_legend_axes, _get_axes_label
  import numpy
  from itertools import cycle
  import plotly.express
  import matplotlib
  import matplotlib.pyplot
  from matplotlib.gridspec import GridSpecFromSubplotSpec
  from mpl_toolkits.axes_grid1.inset_locator import inset_axes
  import matplotlib.patheffects
  import plotly.graph_objects
label_desc: Use image node_id 8 for calling the InfoPlotEngine obj's underlying member method code with example usage: obj._draw_boxplot_plotly(target, box_df, line_df, box_color, fig, grids) without return types