title: Drawing labels that follow their edges in a Networkx graph
body: <p>Working with Networkx, I have several edges that need to be displayed in different ways.
  For that I use the connectionstyle, some edges are straight lines, some others are Arc3.
  The problem is that every edge has a label and the label doesn't follow the edges in these styles.</p>
  
  <p>I borrowed a graph as example : </p>
  
  <pre><code>#!/usr/bin/env python3
  
  import networkx as nx
  import matplotlib.pyplot as plt
  
  # Graph data
  names = ['A', 'B', 'C', 'D', 'E']
  positions = [(0, 0), (0, 1), (1, 0), (0.5, 0.5), (1, 1)]
  edges = [('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E'), ('D', 'A')]
  
  # Matplotlib figure
  plt.figure('My graph problem')
  
  # Create graph
  G = nx.MultiDiGraph(format='png', directed=True)
  
  for index, name in enumerate(names):
      G.add_node(name, pos=positions[index])
  
  labels = {}
  for edge in edges:
      G.add_edge(edge[0], edge[1])
      labels[(edge[0], edge[1])] = '{} -&gt; {}'.format(edge[0], edge[1])
  
  layout = dict((n, G.node[n]["pos"]) for n in G.nodes())
  nx.draw(G, pos=layout, with_labels=True, node_size=300, connectionstyle='Arc3, rad=0.3')
  
  nx.draw_networkx_edge_labels(G, layout, edge_labels=labels, connectionstyle='Arc3, rad=0.3')
  # Here is the problem : the labels will not follow the edges
  
  plt.show()
  </code></pre>
  
  <p>That can lead to problems as shows 
  <a href="https://i.stack.imgur.com/W9OVX.png" rel="noreferrer">this example image</a> : we're not sure for which edge is the label.</p>
  
  <p>Is there a way to draw labels that follow their edges ?</p>
  
  <p>Thanks</p>