code: def causes(
      data: list,
      cause_x: float,
      cause_y: float,
      cause_xytext=(-9, -0.3),
      top: bool = True,
  ):
      """
      Place each cause to a position relative to the problems
      annotations.
  
      Parameters
      ----------
      data : indexable object
          The input data. IndexError is
          raised if more than six arguments are passed.
      cause_x, cause_y : float
          The `X` and `Y` position of the cause annotations.
      cause_xytext : tuple, optional
          Adjust to set the distance of the cause text from the problem
          arrow in fontsize units.
      top : bool
  
      Returns
      -------
      None.
  
      """
      for index, cause in enumerate(data):
          # First cause annotation is placed in the middle of the problems arrow
          # and each subsequent cause is plotted above or below it in succession.
  
          # [<x pos>, [<y pos top>, <y pos bottom>]]
          coords = [
              [0, [0, 0]],
              [0.23, [0.5, -0.5]],
              [-0.46, [-1, 1]],
              [0.69, [1.5, -1.5]],
              [-0.92, [-2, 2]],
              [1.15, [2.5, -2.5]],
          ]
          if top:
              cause_y += coords[index][1][0]
          else:
              cause_y += coords[index][1][1]
          cause_x -= coords[index][0]
  
          ax.annotate(
              cause,
              xy=(cause_x, cause_y),
              horizontalalignment="center",
              xytext=cause_xytext,
              fontsize="9",
              xycoords="data",
              textcoords="offset fontsize",
              arrowprops=dict(arrowstyle="->", facecolor="black"),
          )
  
imports: import matplotlib.pyplot
  from matplotlib.patches import Polygon, Wedge
label_desc: Use image node_id 2 for calling a global function with example usage: causes(data, cause_x, cause_y, cause_xytext, top) without return types