code: def subplots(rows:int, cols:int, imgsize:int=4, figsize:Optional[Tuple[int,int]]=None, title=None, **kwargs):
      "Like `plt.subplots` but with consistent axs shape, `kwargs` passed to `fig.suptitle` with `title`"
      figsize = ifnone(figsize, (imgsize*cols, imgsize*rows))
      fig, axs = plt.subplots(rows,cols,figsize=figsize)
      if rows==cols==1: axs = [[axs]] # subplots(1,1) returns Axes, not [Axes]
      elif (rows==1 and cols!=1) or (cols==1 and rows!=1): axs = [axs]
      if title is not None: fig.suptitle(title, **kwargs)
      return array(axsf subplots(rows:int, cols:int, imgsize:int=4, figsize:Optional[Tuple[int,int]]=None, title=None, **kwargs):
      "Like `plt.subplots` but with consistent axs shape, `kwargs` passed to `fig.suptitle` with `title`"
      figsize = ifnone(figsize, (imgsize*cols, imgsize*rows))
      fig, axs = plt.subplots(rows,cols,figsize=figsize)
      if rows==cols==1: axs = [[axs]] # subplots(1,1) returns Axes, not [Axes]
      elif (rows==1 and cols!=1) or (cols==1 and rows!=1): axs = [axs]
      if title is not None: fig.suptitle(title, **kwargs)
      return array(axs)
docs: Like `plt.subplots` but with consistent axs shape, `kwargs` passed to `fig.suptitle` with `title`