class_docstr: Create plots for `PDPInteract`
  
  Methods
  -------
  plot : generate the plot
  plot_matplotlib : plot using matplotlib
  plot_plotly : plot using plotly
class_docstr_tok: ["Create","plots","for","`","PDPInteract","`","Methods","--","--","--","-","plot",":","generate","the","plot","plot_matplotlib",":","plot","using","matplotlib","plot_plotly",":","plot","using","plotly"]
code: def plot_plotly(self):
      nrows, ncols = self.plot_style.nrows, self.plot_style.ncols
      plot_args = {
          "rows": nrows * (2 if self.plot_style.plot_pdp else 1),
          "cols": ncols * (2 if self.plot_style.plot_pdp else 1),
          "horizontal_spacing": 0,
          "vertical_spacing": 0,
      }
      fig = self.plot_style.make_subplots_plotly(plot_args)
      subplot_titles = []
  
      for i, class_idx in enumerate(self.which_classes):
          (
              pdp_x,
              pdp_y,
              pdp_xy,
              pdp_range,
              target,
              cmap,
          ) = self.prepare_data(class_idx)
          nc, nr = i % ncols + 1, i // ncols + 1
          x_grids, y_grids, xy_grids = self.prepare_grids(nc, nr)
          title, cb_xyz = self.plot_style.update_plot_domains(
              fig,
              nc,
              nr,
              (x_grids, y_grids, xy_grids),
              f"pred_{target}",
          )
          subplot_titles.append(title)
          self._pdp_inter_plot_plotly(
              pdp_xy, cmap, cb_xyz, pdp_range, fig, xy_grids
          )
  
          if self.plot_style.plot_pdp:
              self._pdp_iso_plot_plotly(
                  pdp_x, cmap, pdp_range, fig, x_grids, is_y=False
              )
              self._pdp_iso_plot_plotly(
                  pdp_y, cmap, pdp_range, fig, y_grids, is_y=True
              )
          self.wrapup_plotly(fig, xy_grids, x_grids, y_grids)
  
      if len(self.plot_obj.target) > 1:
          fig.update_layout(annotations=subplot_titles)
  
      return fig, None
  
imports: from .utils import _get_string, _to_rgba
  from .styles import _prepare_plot_style, _axes_modify, _display_percentile, _modify_legend_axes, _get_axes_label
  import pandas
  import numpy
  import matplotlib
  import matplotlib.pyplot
  from matplotlib.gridspec import GridSpecFromSubplotSpec
  import copy
  from mpl_toolkits.axes_grid1.inset_locator import inset_axes
  import plotly.graph_objects
  from sklearn.cluster import MiniBatchKMeans, KMeans
  from itertools import cycle
label_desc: Use image node_id 22 for calling the PDPInteractPlotEngine obj's underlying member method code with example usage: obj.plot_plotly() and returns: fig,  None