title: Plotting directed graphs in Python in a way that show all edges separately
body: <p>I'm using Python to simulate a process that takes place on directed graphs.  I would like to produce an animation of this process.</p>
  
  <p>The problem that I've run into is that most Python graph visualization libraries combine pairs of directed edges into a single edge.  For example, <a href="http://networkx.lanl.gov" rel="noreferrer">NetworkX</a> draws only two edges when displaying the following graph, whereas I would like to display each of the four edges separately:</p>
  
  <pre><code>import networkx as nx
  import matplotlib.pyplot as plt 
  
  G = nx.MultiDiGraph()
  
  G.add_edges_from([
      (1, 2),
      (2, 3),
      (3, 2),
      (2, 1),
  ])
  
  plt.figure(figsize=(8,8))
  nx.draw(G)
  </code></pre>
  
  <p><img src="https://i.stack.imgur.com/olCJa.png" alt="Output from NetworkX; parallel edges are overlapping, so only two lines are displayed"></p>
  
  <p>I would like to display something like this, with each parallel edge drawn separately:</p>
  
  <p><img src="https://i.stack.imgur.com/qppgo.png" alt="Desired output format; parallel edges are drawn separately"></p>
  
  <p>The question <a href="https://stackoverflow.com/questions/5711540/r-reciprocal-edges-in-igraph-in-r">R reciprocal edges in igraph in R</a> seems to deal with the same issue, but the solution there is for the R igraph library, not the Python one.</p>
  
  <p>Is there an easy way to produce this style of plot using an existing Python graph visualization library?  It would be a bonus if it could support multigraphs.</p>
  
  <p>I'm open to solutions that invoke an external program to produce the images.  I'd like to generate a whole series of animation frames, so the solution must be automated.</p>