docstr: Plot all the views contained in the AdjointLayout Object using axes
  appropriate to the layout configuration. All the axes are
  supplied by LayoutPlot - the purpose of the call is to
  invoke subplots with correct options and styles and hide any
  empty axes as necessary.
docstr_tok: ["Plot","all","the","views","contained","in","the","AdjointLayout","Object","using","axes","appropriate","to","the","layout","configuration",".","All","the","axes","are","supplied","by","LayoutPlot","-","the","purpose","of","the","call","is","to","invoke","subplots","with","correct","options","and","styles","and","hide","any","empty","axes","as","necessary","."]
code: def _create_subplots(
      self, layout, positions, layout_dimensions, ranges, num=0
  ):
      """
      Plot all the views contained in the AdjointLayout Object using axes
      appropriate to the layout configuration. All the axes are
      supplied by LayoutPlot - the purpose of the call is to
      invoke subplots with correct options and styles and hide any
      empty axes as necessary.
      """
      subplots = {}
      adjoint_clone = layout.clone(shared_data=False, id=layout.id)
      subplot_opts = dict(adjoined=layout)
      main_plot = None
      for pos in positions:
          # Pos will be one of 'main', 'top' or 'right' or None
          element = layout.get(pos, None)
          if element is None:
              continue
  
          # Options common for any subplot
          vtype = (
              element.type
              if isinstance(element, HoloMap)
              else element.__class__
          )
          plot_type = Store.registry[self.renderer.backend].get(
              vtype, None
          )
          plotopts = self.lookup_options(element, "plot").options
          side_opts = {}
          if pos != "main":
              plot_type = AdjointLayoutPlot.registry.get(
                  vtype, plot_type
              )
              if pos == "right":
                  side_opts = dict(
                      height=main_plot.height,
                      yaxis="right",
                      invert_axes=True,
                      width=120,
                      labelled=["y"],
                      xticks=2,
                      show_title=False,
                  )
              else:
                  side_opts = dict(
                      width=main_plot.width,
                      xaxis="top",
                      height=120,
                      labelled=["x"],
                      yticks=2,
                      show_title=False,
                  )
  
          # Override the plotopts as required
          # Customize plotopts depending on position.
          plotopts = dict(side_opts, **plotopts)
          plotopts.update(subplot_opts)
  
          if plot_type is None:
              self.param.warning(
                  "Plotly plotting class for %s type not found, "
                  "object will not be rendered." % vtype.__name__
              )
              continue
          num = num if len(self.coords) > 1 else 0
          subplot = plot_type(
              element,
              keys=self.keys,
              dimensions=self.dimensions,
              layout_dimensions=layout_dimensions,
              ranges=ranges,
              subplot=True,
              uniform=self.uniform,
              layout_num=num,
              **plotopts,
          )
          subplots[pos] = subplot
          if isinstance(plot_type, type) and issubclass(
              plot_type, GenericCompositePlot
          ):
              adjoint_clone[pos] = subplots[pos].layout
          else:
              adjoint_clone[pos] = subplots[pos].hmap
          if pos == "main":
              main_plot = subplot
  
      return subplots, adjoint_clone
  
imports: import param
  from holoviews.plotting.util import attach_streams
  from ...core import AdjointLayout, Empty, GridMatrix, GridSpace, HoloMap, NdLayout
  from ...core.options import Store
  from ...core.util import wrap_tuple
  from ...element import Histogram
  from ..plot import CallbackPlot, DimensionedPlot, GenericAdjointLayoutPlot, GenericCompositePlot, GenericElementPlot, GenericLayoutPlot
  from .util import configure_matching_axes_from_dims, figure_grid
label_desc: Use image node_id 4 for calling the LayoutPlot obj's underlying member method code with example usage: obj._create_subplots(layout, positions, layout_dimensions, ranges, num) and returns: subplots,  adjoint_clone