docs: def plot_soma3d(ax, soma, color=None, alpha=_ALPHA):
      '''Generates a 3d figure of the soma.
  
      Args:
          ax(matplotlib axes): on what to plot
          soma(neurom.core.Soma): plotted soma
          color(str or None): Color of plotted values, None corresponds to default choice
          alpha(float): Transparency of plotted values
      '''
      color = _get_color(color, tree_type=NeuriteType.soma)
  
      if isinstance(soma, SomaCylinders):
          for start, end in zip(soma.points, soma.points[1:]):
              common.plot_cylinder(ax,
                                   start=start[COLS.XYZ], end=end[COLS.XYZ],
                                   start_radius=start[COLS.R], end_radius=end[COLS.R],
                                   color=color, alpha=alpha)
      else:
          common.plot_sphere(ax, center=soma.center[COLS.XYZ], radius=soma.radius,
                             color=color, alpha=alpha)
  
      # unlike w/ 2d Axes, the dataLim isn't set by collections, so it has to be updated manually
      _update_3d_datalim(ax, soma)