code: def logo(
      ax,
      color_kws,
      ring,
      ring_idx,
      edge,
      pdf_means,
      pdf_sigma,
      dy,
      y0,
      w,
      h,
      hist_mean,
      hist_sigma,
      hist_y0,
      lw,
      skip,
      scatter,
      pad,
      scale,
  ):
      # Square, invisible axes with specified limits to center the logo
      ax.set(xlim=(35 + w, 95 - w), ylim=(-3, 53))
      ax.set_axis_off()
      ax.set_aspect("equal")
  
      # Magic numbers for the logo circle
      radius = 27
      center = 65, 25
  
      # Full x and y grids for a gaussian curve
      x = np.arange(101)
      y = gaussian(x.size, pdf_sigma)
  
      x0 = 30  # Magic number
      xx = x[x0:]
  
      # Vertical distances between the PDF curves
      n = len(pdf_means)
      dys = np.linspace(0, (n - 1) * dy, n) - (n * dy / 2)
      dys -= dys.mean()
  
      # Compute the PDF curves with vertical offsets
      pdfs = [
          h * (y[x0 - m : -m] + y0 + dy)
          for m, dy in zip(pdf_means, dys)
      ]
  
      # Add in constants to fill from bottom and to top
      pdfs.insert(0, np.full(xx.shape, -h))
      pdfs.append(np.full(xx.shape, 50 + h))
  
      # Color gradient
      colors = sns.cubehelix_palette(
          n + 1 + bool(hist_mean), **color_kws
      )
  
      # White fill between curves and around edges
      bg = patches.Circle(
          center,
          radius=radius - 1 + ring,
          color="white",
          transform=ax.transData,
          zorder=0,
      )
      ax.add_artist(bg)
  
      # Clipping artist (not shown) for the interior elements
      fg = patches.Circle(
          center, radius=radius - edge, transform=ax.transData
      )
  
      # Ring artist to surround the circle (optional)
      if ring:
          wedge = patches.Wedge(
              center,
              r=radius + edge / 2,
              theta1=0,
              theta2=360,
              width=edge / 2,
              transform=ax.transData,
              color=colors[ring_idx],
              alpha=1,
          )
          ax.add_artist(wedge)
  
      # Add histogram bars
      if hist_mean:
          hist_color = colors.pop(0)
          hist_y = gaussian(x.size, hist_sigma)
          hist = (
              1.1 * h * (hist_y[x0 - hist_mean : -hist_mean] + hist_y0)
          )
          dx = x[skip] - x[0]
          hist_x = xx[::skip]
          hist_h = h + hist[::skip]
          # Magic number to avoid tiny sliver of bar on edge
          use = hist_x < center[0] + radius * 0.5
          bars = ax.bar(
              hist_x[use],
              hist_h[use],
              bottom=-h,
              width=dx,
              align="edge",
              color=hist_color,
              ec="w",
              lw=lw,
              zorder=3,
          )
          for bar in bars:
              bar.set_clip_path(fg)
  
      # Add each smooth PDF "wave"
      for i, pdf in enumerate(pdfs[1:], 1):
          u = ax.fill_between(
              xx, pdfs[i - 1] + w, pdf, color=colors[i - 1], lw=0
          )
          u.set_clip_path(fg)
  
      # Add scatterplot in top wave area
      if scatter:
          seed = sum(map(ord, "seaborn logo"))
          xy = poisson_disc_sample(radius - edge - ring, pad, seed=seed)
          clearance = distance.cdist(xy + center, np.c_[xx, pdfs[-2]])
          use = clearance.min(axis=1) > pad / 1.8
          x, y = xy[use].T
          sizes = (x - y) % 9
  
          points = ax.scatter(
              x + center[0],
              y + center[1],
              s=scale * (10 + sizes * 5),
              zorder=5,
              color=colors[-1],
              ec="w",
              lw=scale / 2,
          )
          path = u.get_paths()[0]
          points.set_clip_path(path, transform=u.get_transform())
          u.set_visible(False)
  
file_path: seaborn/doc/tools/generate_logos.py
imports: import numpy
  import seaborn
  from matplotlib import patches
  import matplotlib.pyplot
  from scipy.signal import gaussian
  from scipy.spatial import distance
label_desc: Use image node_id 2 for calling a global function with example usage: logo(ax, color_kws, ring, ring_idx, edge, pdf_means, pdf_sigma, dy, y0, w, h, hist_mean, hist_sigma, hist_y0, lw, skip, scatter, pad, scale) without return types