class_docstr: Artist for an igraph.Graph object.
  
  @param graph: An igraph.Graph object to plot
  @param layout: A layout object or matrix of coordinates to use for plotting.
      Each element or row should describes the coordinates for a vertex.
  @param vertex_style: A dictionary specifying style options for vertices.
  @param edge_style: A dictionary specifying style options for edges.
class_docstr_tok: ["Artist","for","an","igraph.Graph","object",".","@","param","graph",":","An","igraph.Graph","object","to","plot","@","param","layout",":","A","layout","object","or","matrix","of","coordinates","to","use","for","plotting",".","Each","element","or","row","should","describes","the","coordinates","for","a","vertex",".","@","param","vertex_style",":","A","dictionary","specifying","style","options","for","vertices",".","@","param","edge_style",":","A","dictionary","specifying","style","options","for","edges","."]
code: def _draw_edge_labels(self):
      graph = self.graph
      kwds = self.kwds
      vertex_builder = self._vertex_builder
      edge_builder = self._edge_builder
      edge_drawer = self._edge_drawer
      edge_order = self._edge_order or range(self.graph.ecount())
  
      self._edge_labels = []
  
      labels = kwds.get("edge_label", None)
      if labels is None:
          return
  
      edge_label_iter = (
          (labels[i], edge_builder[i], graph.es[i]) for i in edge_order
      )
      for label, visual_edge, edge in edge_label_iter:
          # Ask the edge drawer to propose an anchor point for the label
          src, dest = edge.tuple
          src_vertex, dest_vertex = (
              vertex_builder[src],
              vertex_builder[dest],
          )
          (x, y), (halign, valign) = edge_drawer.get_label_position(
              visual_edge,
              src_vertex,
              dest_vertex,
          )
  
          text_kwds = {}
          text_kwds["ha"] = halign.value
          text_kwds["va"] = valign.value
  
          if visual_edge.background is not None:
              text_kwds["bbox"] = {
                  "facecolor": visual_edge.background,
                  "edgecolor": "none",
              }
              text_kwds["ha"] = "center"
              text_kwds["va"] = "center"
  
          if visual_edge.align_label:
              # Rotate the text to align with the edge
              rotation = edge_drawer.get_label_rotation(
                  visual_edge,
                  src_vertex,
                  dest_vertex,
              )
              text_kwds["rotation"] = rotation
  
          art = mpl.text.Annotation(
              label,
              (x, y),
              fontsize=visual_edge.label_size,
              color=visual_edge.label_color,
              transform=self.axes.transData,
              clip_on=True,
              zorder=3,
              **text_kwds,
          )
          self._edge_labels.append(art)
  
imports: from warnings import warn
  from functools import wraps, partial
  from igraph._igraph import convex_hull, VertexSeq
  from igraph.drawing.baseclasses import AbstractGraphDrawer
  from igraph.drawing.utils import FakeModule
  from .edge import MatplotlibEdgeDrawer, EdgeCollection
  from .polygon import HullCollection
  from .utils import find_matplotlib
  from .vertex import MatplotlibVertexDrawer, VertexCollection
label_desc: Use image node_id 13 for calling the GraphArtist obj's underlying member method code with example usage: obj._draw_edge_labels() without return types