diff options
author | Ross Barnowski <rossbar@berkeley.edu> | 2021-08-30 10:50:17 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-30 18:50:17 +0300 |
commit | a8b907df38d9d36f77d75c65d9e6a5518b849c6b (patch) | |
tree | d2dfad97d52779b85afb3296dfd6b67077b62e4f | |
parent | 2e61dacc1ffcdcf44edb5fd68dca5f51e09db219 (diff) | |
download | networkx-a8b907df38d9d36f77d75c65d9e6a5518b849c6b.tar.gz |
Fix bug in selfloop drawing in draw_networkx_edges (#5048)
* Add test case for bug.
* Make sure selfloops are included in orig edgelist b4 drawing.
This fixes the bug where selfloops were drawn no matter what, even if
they were explicitly excluded via the edgelist parameter.
-rw-r--r-- | networkx/drawing/nx_pylab.py | 8 | ||||
-rw-r--r-- | networkx/drawing/tests/test_pylab.py | 10 |
2 files changed, 14 insertions, 4 deletions
diff --git a/networkx/drawing/nx_pylab.py b/networkx/drawing/nx_pylab.py index e66d0c3a..bbffab22 100644 --- a/networkx/drawing/nx_pylab.py +++ b/networkx/drawing/nx_pylab.py @@ -852,10 +852,10 @@ def draw_networkx_edges( # Draw the edges if use_linecollection: edge_viz_obj = _draw_networkx_edges_line_collection() - # Make sure selfloop edges are also drawn. - edgelist = list(nx.selfloop_edges(G)) - if edgelist: - edge_pos = np.asarray([(pos[e[0]], pos[e[1]]) for e in edgelist]) + # Make sure selfloop edges are also drawn + selfloops_to_draw = [loop for loop in nx.selfloop_edges(G) if loop in edgelist] + if selfloops_to_draw: + edge_pos = np.asarray([(pos[e[0]], pos[e[1]]) for e in selfloops_to_draw]) arrowstyle = "-" _draw_networkx_edges_fancy_arrow_patch() else: diff --git a/networkx/drawing/tests/test_pylab.py b/networkx/drawing/tests/test_pylab.py index d533cebd..cb79708b 100644 --- a/networkx/drawing/tests/test_pylab.py +++ b/networkx/drawing/tests/test_pylab.py @@ -423,3 +423,13 @@ def test_draw_networkx_arrows_default_directed(drawing_func): ) assert ax.patches plt.delaxes(ax) + + +def test_edgelist_kwarg_not_ignored(): + # See gh-4994 + G = nx.path_graph(3) + G.add_edge(0, 0) + fig, ax = plt.subplots() + nx.draw(G, edgelist=[(0, 1), (1, 2)], ax=ax) # Exclude self-loop from edgelist + assert not ax.patches + plt.delaxes(ax) |