code: def draw_body(data: dict):
      """
      Place each section in its correct place by changing
      the coordinates on each loop.
  
      Parameters
      ----------
      data : dict
          The input data (can be list or tuple). ValueError is
          raised if more than six arguments are passed.
  
      Returns
      -------
      None.
  
      """
      second_sections = []
      third_sections = []
      # Resize diagram to automatically scale in response to the number
      # of problems in the input data.
      if len(data) == 1 or len(data) == 2:
          spine_length = (-2.1, 2)
          head_pos = (2, 0)
          tail_pos = ((-2.8, 0.8), (-2.8, -0.8), (-2.0, -0.01))
          first_section = [1.6, 0.8]
      elif len(data) == 3 or len(data) == 4:
          spine_length = (-3.1, 3)
          head_pos = (3, 0)
          tail_pos = ((-3.8, 0.8), (-3.8, -0.8), (-3.0, -0.01))
          first_section = [2.6, 1.8]
          second_sections = [-0.4, -1.2]
      else:  # len(data) == 5 or 6
          spine_length = (-4.1, 4)
          head_pos = (4, 0)
          tail_pos = ((-4.8, 0.8), (-4.8, -0.8), (-4.0, -0.01))
          first_section = [3.5, 2.7]
          second_sections = [1, 0.2]
          third_sections = [-1.5, -2.3]
  
      # Change the coordinates of the annotations on each loop.
      for index, problem in enumerate(data.values()):
          top_row = True
          cause_arrow_y = 1.7
          if index % 2 != 0:  # Plot problems below the spine.
              top_row = False
              y_prob_angle = -16
              cause_arrow_y = -1.7
          else:  # Plot problems above the spine.
              y_prob_angle = 16
          # Plot the 3 sections in pairs along the main spine.
          if index in (0, 1):
              prob_arrow_x = first_section[0]
              cause_arrow_x = first_section[1]
          elif index in (2, 3):
              prob_arrow_x = second_sections[0]
              cause_arrow_x = second_sections[1]
          else:
              prob_arrow_x = third_sections[0]
              cause_arrow_x = third_sections[1]
          if index > 5:
              raise ValueError(
                  f"Maximum number of problems is 6, you have entered "
                  f"{len(data)}"
              )
  
          # draw main spine
          ax.plot(spine_length, [0, 0], color="tab:blue", linewidth=2)
          # draw fish head
          ax.text(
              head_pos[0] + 0.1,
              head_pos[1] - 0.05,
              "PROBLEM",
              fontsize=10,
              weight="bold",
              color="white",
          )
          semicircle = Wedge(head_pos, 1, 270, 90, fc="tab:blue")
          ax.add_patch(semicircle)
          # draw fishtail
          triangle = Polygon(tail_pos, fc="tab:blue")
          ax.add_patch(triangle)
          # Pass each category name to the problems function as a string on each loop.
          problems(
              list(data.keys())[index],
              prob_arrow_x,
              0,
              -12,
              y_prob_angle,
          )
          # Start the cause function with the first annotation being plotted at
          # the cause_arrow_x, cause_arrow_y coordinates.
          causes(problem, cause_arrow_x, cause_arrow_y, top=top_row)
  
imports: import matplotlib.pyplot
  from matplotlib.patches import Polygon, Wedge
label_desc: Use image node_id 3 for calling a global function with example usage: draw_body(data) without return types