code: def matrix_and_line_shell(figsize=(5, 12), strip=False):
      
      fig = plt.figure(figsize=figsize)
  
      # Constants to keep track
      if strip:
          STRIP_COLS = 1
      else:
          STRIP_COLS = 0
      ROWS = 4
      COLS = 8 + STRIP_COLS
      MAT_COLS = 7
      MAT_ROWS = 3
      LINE_ROWS = ROWS - MAT_ROWS
  
      mat_ax = plt.subplot2grid(
          shape=(ROWS, COLS),
          loc=(0, STRIP_COLS),
          rowspan=MAT_ROWS,
          colspan=MAT_COLS,
      )
  
      line_ax = plt.subplot2grid(
          shape=(ROWS, COLS),
          loc=(MAT_ROWS, STRIP_COLS),
          rowspan=LINE_ROWS,
          colspan=MAT_COLS,
          sharex=mat_ax)
  
      if strip:
          strip_ax = plt.subplot2grid(
              shape=(ROWS, COLS),
              loc=(0, 0),
              rowspan=MAT_ROWS,
              colspan=STRIP_COLS,
              sharey=mat_ax,
          )
      else:
          strip_ax = None
  
      cax = plt.subplot2grid(
          shape=(ROWS, COLS),
          loc=(ROWS - MAT_ROWS, MAT_COLS + STRIP_COLS),
          rowspan=1,
          colspan=1,
      )
  
      fig.subplots_adjust(hspace=0.1, wspace=0.2, right=0.88, left=0.23)
      return fig, mat_ax, line_ax, strip_ax, cax
docs: Helper function to construct an empty figure that has space for a matrix,
      a summary line plot directly below it, a colorbar axis, and an optional
      "strip" axis that parallels the matrix (and shares its y-axis) where data
      can be added to create callbacks.
  
      Returns a tuple of (fig, matrix_ax, line_ax, strip_ax, colorbar_ax) that
      can then be used to plot upon.
  
      :param figsize: Tuple of (width, height), in inches, for the figure to be
      :param strip: If `strip` is False, then the returned `strip_ax` will be
          None and no strip axes will be created.