summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorJose Pinilla <jpinilla@ece.ubc.ca>2020-07-10 08:03:52 -0700
committerGitHub <noreply@github.com>2020-07-10 08:03:52 -0700
commit7459db3268b48dd7c6dfeba528f57e48e0572975 (patch)
tree46cf1288775bb040fcac8f0b4b7f040a2aba0603 /examples
parent3d5f577f5176950473367c89fc4e2fac5fb49ce7 (diff)
downloadnetworkx-7459db3268b48dd7c6dfeba528f57e48e0572975.tar.gz
Implemented multipartite_layout (#3815)
* Implemented multipartite_layout * Added test. * Remove left over `max_layer` in multipartite_layout * Multipartite Layout Example * Update examples/drawing/plot_multipartite_graph.py Co-authored-by: Jarrod Millman <jarrod.millman@gmail.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/drawing/plot_multipartite_graph.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/examples/drawing/plot_multipartite_graph.py b/examples/drawing/plot_multipartite_graph.py
new file mode 100644
index 00000000..87da9616
--- /dev/null
+++ b/examples/drawing/plot_multipartite_graph.py
@@ -0,0 +1,39 @@
+"""
+===================
+Multipartite Layout
+===================
+"""
+
+import itertools
+import matplotlib.pyplot as plt
+import networkx as nx
+
+from networkx.utils import pairwise
+
+subset_sizes = [5,5,4,3,2,4,4,3]
+subset_color = ['gold',
+ 'violet',
+ 'violet',
+ 'violet',
+ 'violet',
+ 'limegreen',
+ 'limegreen',
+ 'darkorange']
+
+def multilayered_graph(*subset_sizes):
+ extents = pairwise(itertools.accumulate((0,) + subset_sizes))
+ layers = [range(start, end) for start, end in extents]
+ G = nx.Graph()
+ for (i, layer) in enumerate(layers):
+ G.add_nodes_from(layer, layer=i)
+ for layer1, layer2 in pairwise(layers):
+ G.add_edges_from(itertools.product(layer1, layer2))
+ return G
+
+G = multilayered_graph(*subset_sizes)
+color = [subset_color[data['layer']] for v,data in G.nodes(data=True)]
+pos = nx.multipartite_layout(G,subset_key='layer')
+plt.figure(figsize=(8, 8))
+nx.draw(G, pos, node_color=color, with_labels=False)
+plt.axis("equal")
+plt.show()