Hi,
Edge drawing is implemented in specialized edge drawer
classes in igraph/drawing/edge.py. They all derive from an
abstract base class called AbstractEdgeDrawer, which defines a
function named get_label_position() that returns the position
of the label for an edge. The default edge drawer used by
igraph is called ArrowEdgeDrawer.
You can therefore simply implement a new class derived from
ArrowEdgeDrawer, override its get_label_position() method, and
then use this custom edge drawer when plotting the graph as
follows:
from igraph.drawing.edge import ArrowEdgeDrawer
from igraph.drawing.graph import DefaultGraphDrawer
from functools import partial
class CustomEdgeDrawer(ArrowEdgeDrawer):
# do your magic here
pass
my_drawer = partial(DefaultGraphDrawer,
edge_drawer_factory=CustomEdgeDrawer)
plot(graph, drawer_factory=my_drawer)
(Haven't tested it, but it should work).
All the best,