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 _pdp_xy_grid(self, pdp_xy, norm, cmap, axes):
      im = axes.imshow(
          pdp_xy,
          cmap=cmap,
          norm=norm,
          origin="lower",
          aspect="auto",
          alpha=self.plot_style.interact["fill_alpha"],
      )
      R, C = pdp_xy.shape
  
      for r in range(R):
          for c in range(C):
              text_color = (
                  "black"
                  if pdp_xy[r, c]
                  < norm.vmin + (norm.vmax - norm.vmin) * 0.5
                  else "w"
              )
              axes.text(
                  c,
                  r,
                  round(pdp_xy[r, c], 3),
                  ha="center",
                  va="center",
                  color=text_color,
                  size=self.plot_style.interact["font_size"],
              )
  
      axes.set_xticks(np.arange(C - 1) + 0.5)
      axes.set_yticks(np.arange(R - 1) + 0.5)
  
      return im
  
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 3 for calling the PDPInteractPlotEngine obj's underlying member method code with example usage: obj._pdp_xy_grid(pdp_xy, norm, cmap, axes) and returns: im