docstr: Draw a list of text labels for some bounding box on the image.
  Args:
      text_ls (list of strings): a list of text labels.
      box_coordinate (tensor): shape (4,). The (x_left, y_top, x_right, y_bottom)
          coordinates of the box.
      top_corner (bool): If True, draw the text labels at (x_left, y_top) of the box.
          Else, draw labels at (x_left, y_bottom).
      font_size (Optional[int]): font of the text. If not provided, a font size
          proportional to the image width is calculated and used.
      color (str): color of the text. Refer to `matplotlib.colors` for full list
          of formats that are accepted.
      box_facecolors (str): colors of the box wrapped around the text. Refer to
          `matplotlib.colors` for full list of formats that are accepted.
      alpha (float): transparency level of the box.
docstr_tok: ["Draw","a","list","of","text","labels","for","some","bounding","box","on","the","image",".","Args",":","text_ls","(","list","of","strings",")",":","a","list","of","text","labels",".","box_coordinate","(","tensor",")",":","shape","(","4",",",")",".","The","(","x_left",",","y_top",",","x_right",",","y_bottom",")","coordinates","of","the","box",".","top_corner","(","bool",")",":","If","True",",","draw","the","text","labels","at","(","x_left",",","y_top",")","of","the","box",".","Else",",","draw","labels","at","(","x_left",",","y_bottom",")",".","font_size","(","Optional","[","int","]",")",":","font","of","the","text",".","If","not","provided",",","a","font","size","proportional","to","the","image","width","is","calculated","and","used",".","color","(","str",")",":","color","of","the","text",".","Refer","to","`","matplotlib.colors","`","for","full","list","of","formats","that","are","accepted",".","box_facecolors","(","str",")",":","colors","of","the","box","wrapped","around","the","text",".","Refer","to","`","matplotlib.colors","`","for","full","list","of","formats","that","are","accepted",".","alpha","(","float",")",":","transparency","level","of","the","box","."]
code: def draw_multiple_text(
      self,
      text_ls,
      box_coordinate,
      *,
      top_corner=True,
      font_size=None,
      color="w",
      box_facecolors="black",
      alpha=0.5,
  ):
      """
      Draw a list of text labels for some bounding box on the image.
      Args:
          text_ls (list of strings): a list of text labels.
          box_coordinate (tensor): shape (4,). The (x_left, y_top, x_right, y_bottom)
              coordinates of the box.
          top_corner (bool): If True, draw the text labels at (x_left, y_top) of the box.
              Else, draw labels at (x_left, y_bottom).
          font_size (Optional[int]): font of the text. If not provided, a font size
              proportional to the image width is calculated and used.
          color (str): color of the text. Refer to `matplotlib.colors` for full list
              of formats that are accepted.
          box_facecolors (str): colors of the box wrapped around the text. Refer to
              `matplotlib.colors` for full list of formats that are accepted.
          alpha (float): transparency level of the box.
      """
      if not isinstance(box_facecolors, list):
          box_facecolors = [box_facecolors] * len(text_ls)
      assert len(box_facecolors) == len(
          text_ls
      ), "Number of colors provided is not equal to the number of text labels."
      if not font_size:
          font_size = self._default_font_size
      text_box_width = font_size + font_size // 2
      # If the texts does not fit in the assigned location,
      # we split the text and draw it in another place.
      if top_corner:
          num_text_split = self._align_y_top(
              box_coordinate, len(text_ls), text_box_width
          )
          y_corner = 1
      else:
          num_text_split = len(text_ls) - self._align_y_bottom(
              box_coordinate, len(text_ls), text_box_width
          )
          y_corner = 3
  
      text_color_sorted = sorted(
          zip(text_ls, box_facecolors), key=lambda x: x[0], reverse=True
      )
      if len(text_color_sorted) != 0:
          text_ls, box_facecolors = zip(*text_color_sorted)
      else:
          text_ls, box_facecolors = [], []
      text_ls, box_facecolors = list(text_ls), list(box_facecolors)
      self.draw_multiple_text_upward(
          text_ls[:num_text_split][::-1],
          box_coordinate,
          y_corner=y_corner,
          font_size=font_size,
          color=color,
          box_facecolors=box_facecolors[:num_text_split][::-1],
          alpha=alpha,
      )
      self.draw_multiple_text_downward(
          text_ls[num_text_split:],
          box_coordinate,
          y_corner=y_corner,
          font_size=font_size,
          color=color,
          box_facecolors=box_facecolors[num_text_split:],
          alpha=alpha,
      )
  
imports: import itertools
  import logging
  import numpy
  import matplotlib.pyplot
  import torch
  from detectron2.utils.visualizer import Visualizer
  import slowfast.utils.logging
  from slowfast.utils.misc import get_class_names
label_desc: Use image node_id 3 for calling the ImgVisualizer obj's underlying member method code with example usage: obj.draw_multiple_text(text_ls, box_coordinate) without return types