code: def plot_surf_img(
      img: surface.SurfaceImage,
      parts: Optional[Sequence[str]] = None,
      mesh: Optional[surface.PolyMesh] = None,
      **kwargs,
  ) -> plt.Figure:
      if mesh is None:
          mesh = img.mesh
      if parts is None:
          parts = list(img.data.keys())
      fig, axes = plt.subplots(
          1,
          len(parts),
          subplot_kw={"projection": "3d"},
          figsize=(4 * len(parts), 4),
      )
      for ax, mesh_part in zip(axes, parts):
          plotting.plot_surf(
              mesh[mesh_part],
              img.data[mesh_part],
              axes=ax,
              title=mesh_part,
              **kwargs,
          )
      assert isinstance(fig, plt.Figure)
      return fig
  
file_path: nilearn/examples/08_experimental/plot_surface_image_and_maskers.py
imports: from typing import Optional, Sequence
  from matplotlib import pyplot
  from nilearn import plotting
  from nilearn.experimental import surface
  from nilearn import connectome, plotting
  import numpy
  from nilearn import decoding, plotting
  from nilearn._utils import param_validation
  import numpy
  from sklearn import feature_selection, linear_model, pipeline, preprocessing
  from nilearn import plotting
label_desc: Use image node_id 1 for calling a global function with example usage: plot_surf_img(img, parts, mesh) and returns: fig