Mercurial > repos > shellac > sam_consensus_v3
diff env/share/doc/networkx-2.5/examples/graph/plot_napoleon_russian_campaign.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/env/share/doc/networkx-2.5/examples/graph/plot_napoleon_russian_campaign.py Mon Mar 22 18:12:50 2021 +0000 @@ -0,0 +1,134 @@ +""" +========================= +Napoleon Russian Campaign +========================= + +Minard's data from Napoleon's 1812-1813 Russian Campaign. +http://www.math.yorku.ca/SCS/Gallery/minard/minard.txt + +""" + +import matplotlib.pyplot as plt +import networkx as nx + + +def minard_graph(): + data1 = """\ +24.0,54.9,340000,A,1 +24.5,55.0,340000,A,1 +25.5,54.5,340000,A,1 +26.0,54.7,320000,A,1 +27.0,54.8,300000,A,1 +28.0,54.9,280000,A,1 +28.5,55.0,240000,A,1 +29.0,55.1,210000,A,1 +30.0,55.2,180000,A,1 +30.3,55.3,175000,A,1 +32.0,54.8,145000,A,1 +33.2,54.9,140000,A,1 +34.4,55.5,127100,A,1 +35.5,55.4,100000,A,1 +36.0,55.5,100000,A,1 +37.6,55.8,100000,A,1 +37.7,55.7,100000,R,1 +37.5,55.7,98000,R,1 +37.0,55.0,97000,R,1 +36.8,55.0,96000,R,1 +35.4,55.3,87000,R,1 +34.3,55.2,55000,R,1 +33.3,54.8,37000,R,1 +32.0,54.6,24000,R,1 +30.4,54.4,20000,R,1 +29.2,54.3,20000,R,1 +28.5,54.2,20000,R,1 +28.3,54.3,20000,R,1 +27.5,54.5,20000,R,1 +26.8,54.3,12000,R,1 +26.4,54.4,14000,R,1 +25.0,54.4,8000,R,1 +24.4,54.4,4000,R,1 +24.2,54.4,4000,R,1 +24.1,54.4,4000,R,1""" + data2 = """\ +24.0,55.1,60000,A,2 +24.5,55.2,60000,A,2 +25.5,54.7,60000,A,2 +26.6,55.7,40000,A,2 +27.4,55.6,33000,A,2 +28.7,55.5,33000,R,2 +29.2,54.2,30000,R,2 +28.5,54.1,30000,R,2 +28.3,54.2,28000,R,2""" + data3 = """\ +24.0,55.2,22000,A,3 +24.5,55.3,22000,A,3 +24.6,55.8,6000,A,3 +24.6,55.8,6000,R,3 +24.2,54.4,6000,R,3 +24.1,54.4,6000,R,3""" + cities = """\ +24.0,55.0,Kowno +25.3,54.7,Wilna +26.4,54.4,Smorgoni +26.8,54.3,Moiodexno +27.7,55.2,Gloubokoe +27.6,53.9,Minsk +28.5,54.3,Studienska +28.7,55.5,Polotzk +29.2,54.4,Bobr +30.2,55.3,Witebsk +30.4,54.5,Orscha +30.4,53.9,Mohilow +32.0,54.8,Smolensk +33.2,54.9,Dorogobouge +34.3,55.2,Wixma +34.4,55.5,Chjat +36.0,55.5,Mojaisk +37.6,55.8,Moscou +36.6,55.3,Tarantino +36.5,55.0,Malo-Jarosewii""" + + c = {} + for line in cities.split("\n"): + x, y, name = line.split(",") + c[name] = (float(x), float(y)) + + g = [] + + for data in [data1, data2, data3]: + G = nx.Graph() + i = 0 + G.pos = {} # location + G.pop = {} # size + last = None + for line in data.split("\n"): + x, y, p, r, n = line.split(",") + G.pos[i] = (float(x), float(y)) + G.pop[i] = int(p) + if last is None: + last = i + else: + G.add_edge(i, last, **{r: int(n)}) + last = i + i = i + 1 + g.append(G) + + return g, c + + +(g, city) = minard_graph() + +plt.figure(1, figsize=(11, 5)) +plt.clf() +colors = ["b", "g", "r"] +for G in g: + c = colors.pop(0) + node_size = [int(G.pop[n] / 300.0) for n in G] + nx.draw_networkx_edges(G, G.pos, edge_color=c, width=4, alpha=0.5) + nx.draw_networkx_nodes(G, G.pos, node_size=node_size, node_color=c, alpha=0.5) + nx.draw_networkx_nodes(G, G.pos, node_size=5, node_color="k") + +for c in city: + x, y = city[c] + plt.text(x, y + 0.1, c) +plt.show()