class_docstr: A LayoutPlot accepts either a Layout or a NdLayout and
  displays the elements in a cartesian grid in scanline order.
docstr: Situate the current AdjointLayoutPlot in a LayoutPlot. The
  LayoutPlot specifies a layout_type into which the AdjointLayoutPlot
  must be embedded. This enclosing layout is guaranteed to have
  enough cells to display all the views.
  
  Based on this enforced layout format, a starting index
  supplied by LayoutPlot (indexing into a large gridspec
  arrangement) is updated to the appropriate embedded value. It
  will also return a list of gridspec indices associated with
  the all the required layout axes.
docstr_tok: ["Situate","the","current","AdjointLayoutPlot","in","a","LayoutPlot",".","The","LayoutPlot","specifies","a","layout_type","into","which","the","AdjointLayoutPlot","must","be","embedded",".","This","enclosing","layout","is","guaranteed","to","have","enough","cells","to","display","all","the","views",".","Based","on","this","enforced","layout","format",",","a","starting","index","supplied","by","LayoutPlot","(","indexing","into","a","large","gridspec","arrangement",")","is","updated","to","the","appropriate","embedded","value",".","It","will","also","return","a","list","of","gridspec","indices","associated","with","the","all","the","required","layout","axes","."]
code: def grid_situate(self, current_idx, layout_type, subgrid_width):
      """
      Situate the current AdjointLayoutPlot in a LayoutPlot. The
      LayoutPlot specifies a layout_type into which the AdjointLayoutPlot
      must be embedded. This enclosing layout is guaranteed to have
      enough cells to display all the views.
  
      Based on this enforced layout format, a starting index
      supplied by LayoutPlot (indexing into a large gridspec
      arrangement) is updated to the appropriate embedded value. It
      will also return a list of gridspec indices associated with
      the all the required layout axes.
      """
      # Set the layout configuration as situated in a NdLayout
  
      if layout_type == "Single":
          start, inds = current_idx + 1, [current_idx]
      elif layout_type == "Dual":
          start, inds = current_idx + 2, [current_idx, current_idx + 1]
  
      bottom_idx = current_idx + subgrid_width
      if layout_type == "Embedded Dual":
          bottom = ((current_idx + 1) % subgrid_width) == 0
          grid_idx = (bottom_idx if bottom else current_idx) + 1
          start, inds = grid_idx, [current_idx, bottom_idx]
      elif layout_type == "Triple":
          bottom = ((current_idx + 2) % subgrid_width) == 0
          grid_idx = (bottom_idx if bottom else current_idx) + 2
          start, inds = grid_idx, [
              current_idx,
              current_idx + 1,
              bottom_idx,
              bottom_idx + 1,
          ]
  
      return start, inds
  
imports: from contextlib import contextmanager
  from itertools import chain
  import matplotlib
  import numpy
  import param
  from matplotlib import animation, gridspec, pyplot, rcParams
  from matplotlib.font_manager import font_scalings
  from mpl_toolkits.mplot3d import Axes3D
  from ...core import AdjointLayout, Collator, CompositeOverlay, Element, Empty, GridMatrix, GridSpace, HoloMap, Layout, NdLayout
  from ...core.options import SkipRendering, Store
  from ...core.util import int_to_alpha, int_to_roman, wrap_tuple_streams
  from ..plot import DimensionedPlot, GenericAdjointLayoutPlot, GenericCompositePlot, GenericElementPlot, GenericLayoutPlot
  from ..util import attach_streams, collate, displayable
  from .util import compute_ratios, fix_aspect, get_old_rcparams
label_desc: Use image node_id 3 for calling the LayoutPlot obj's underlying member method code with example usage: obj.grid_situate(current_idx, layout_type, subgrid_width) and returns: start,  inds