docs: def globe_map(hist: Union[Histogram2D, DirectionalHistogram], ax: Axes3D, *, show_zero: bool = True, **kwargs):
      """Heat map plotted on the surface of a sphere."""
      data = get_data(hist, cumulative=False, flatten=False,
                      density=kwargs.pop("density", False))
  
      cmap = _get_cmap(kwargs)
      norm, cmap_data = _get_cmap_data(data, kwargs)
      colors = cmap(cmap_data)
      lw = kwargs.pop("lw", 1)
  
      r = 1
      xs = r * np.outer(np.sin(hist.numpy_bins[0]), np.cos(hist.numpy_bins[1]))
      ys = r * np.outer(np.sin(hist.numpy_bins[0]), np.sin(hist.numpy_bins[1]))
      zs = r * np.outer(np.cos(hist.numpy_bins[0]), np.ones(hist.shape[1] + 1))
  
      for i in range(hist.shape[0]):
          for j in range(hist.shape[1]):
              if not show_zero and not data[i, j]:
                  continue
              x = xs[i, j], xs[i, j + 1], xs[i + 1, j + 1], xs[i + 1, j]
              y = ys[i, j], ys[i, j + 1], ys[i + 1, j + 1], ys[i + 1, j]
              z = zs[i, j], zs[i, j + 1], zs[i + 1, j + 1], zs[i + 1, j]
              verts = [list(zip(x, y, z))]
              col = Poly3DCollection(verts)
              col.set_facecolor(colors[i, j])
              col.set_edgecolor("black")
              col.set_linewidth(lw)
              ax.add_collection3d(col)
  
      ax.set_xlabel("x")
      ax.set_ylabel("y")
      ax.set_zlabel("z")
  
      if matplotlib.__version__ < "2":
          ax.plot_surface([], [], [], color="b")
      ax.set_xlim(-1.1, 1.1)
      ax.set_ylim(-1.1, 1.1)
      ax.set_zlim(-1.1, 1.1)
      return ax