class_docstr: Draw an arrow using the information supplied to the Arrow annotation
class_docstr_tok: ["Draw","an","arrow","using","the","information","supplied","to","the","Arrow","annotation"]
code: def draw_annotation(self, axis, data, opts):
      x, y, text, direction, points, arrowstyle = data
      if self.invert_axes:
          x, y = y, x
      direction = direction.lower()
      arrowprops = dict(
          {"arrowstyle": arrowstyle},
          **{k: opts[k] for k in self._arrow_style_opts if k in opts},
      )
      textopts = {
          k: opts[k] for k in self._text_style_opts if k in opts
      }
      if direction in ["v", "^"]:
          xytext = (0, points if direction == "v" else -points)
      elif direction in [">", "<"]:
          xytext = (points if direction == "<" else -points, 0)
      if "fontsize" in textopts:
          self.param.warning(
              "Arrow fontsize style option is deprecated, "
              "use textsize option instead."
          )
      if "textsize" in textopts:
          textopts["fontsize"] = textopts.pop("textsize")
      return [
          axis.annotate(
              text,
              xy=(x, y),
              textcoords="offset points",
              xytext=xytext,
              ha="center",
              va="center",
              arrowprops=arrowprops,
              **textopts,
          )
      ]
  
imports: import matplotlib
  import numpy
  import pandas
  import param
  from matplotlib import patches
  from matplotlib.lines import Line2D
  from ...core.options import abbreviated_exception
  from ...core.util import match_spec
  from ...element import HLines, HSpans, VLines, VSpans
  from .element import ColorbarPlot, ElementPlot
  from .plot import mpl_rc_context
label_desc: Use image node_id 1 for calling the ArrowPlot obj's underlying member method code with example usage: obj.draw_annotation(axis, data, opts) and returns: list