code: def plot_grid(
      fs: List[callable],
      ncols=1,
      figsize=None,
      show=False,
      axs_per_iter=1,
      **kwargs,
  ):
      nrows = math.ceil(len(fs) * axs_per_iter / ncols)
      figsize = figsize or (12 * ncols, 12 * nrows)
  
      fig, axs = plt.subplots(
          nrows=nrows, ncols=ncols, figsize=figsize, **kwargs
      )
      axs = np.asarray(axs)
  
      if axs_per_iter == 1:
          axs = axs.flatten()
      elif axs_per_iter > 1:
          axs = axs.reshape(-1, axs_per_iter)
      else:
          raise ValueError("axs_per_iter has to be greater than 1")
  
      for f, ax in zip(fs, axs):
          f(ax=ax)
  
      plt.tight_layout()
      if show:
          plt.show()
  
file_path: icevision/icevision/utils/imageio.py
imports: from icevision.imports import *
  from PIL import ExifTags
label_desc: Use image node_id 9 for calling a global function with example usage: plot_grid(fs, ncols, figsize, show, axs_per_iter) without return types