code: def _update_labels(self, ax, element, data, style):
      labels = self.handles.get("labels", [])
      for label in labels:
          try:
              label.remove()
          except Exception:
              pass
      if "text" not in data:
          self.handles["labels"] = []
          return
      labels = []
      fontsize = style.get("text_font_size", 8)
      for x, y, l, a in zip(*data["text"]):
          label = ax.annotate(
              l,
              xy=(x, y),
              xycoords="data",
              rotation=a,
              horizontalalignment="left",
              fontsize=fontsize,
              verticalalignment="center",
              rotation_mode="anchor",
          )
          labels.append(label)
      self.handles["labels"] = labels
  
imports: import warnings
  import numpy
  import param
  from matplotlib.collections import LineCollection, PolyCollection
  from ...core.data import Dataset
  from ...core.options import Cycle, abbreviated_exception
  from ...core.util import is_number, isscalar, search_indices, unique_array
  from ...util.transform import dim
  from ..mixins import ChordMixin, GraphMixin
  from ..util import get_directed_graph_paths, process_cmap
  from .element import ColorbarPlot
  from .util import filter_styles
label_desc: Use image node_id 4 for calling the ChordPlot obj's underlying member method code with example usage: obj._update_labels(ax, element, data, style) without return types