Mercurial > repos > shellac > sam_consensus_v3
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4f3585e2f14b |
---|---|
1 """ | |
2 ========================= | |
3 Napoleon Russian Campaign | |
4 ========================= | |
5 | |
6 Minard's data from Napoleon's 1812-1813 Russian Campaign. | |
7 http://www.math.yorku.ca/SCS/Gallery/minard/minard.txt | |
8 | |
9 """ | |
10 | |
11 import matplotlib.pyplot as plt | |
12 import networkx as nx | |
13 | |
14 | |
15 def minard_graph(): | |
16 data1 = """\ | |
17 24.0,54.9,340000,A,1 | |
18 24.5,55.0,340000,A,1 | |
19 25.5,54.5,340000,A,1 | |
20 26.0,54.7,320000,A,1 | |
21 27.0,54.8,300000,A,1 | |
22 28.0,54.9,280000,A,1 | |
23 28.5,55.0,240000,A,1 | |
24 29.0,55.1,210000,A,1 | |
25 30.0,55.2,180000,A,1 | |
26 30.3,55.3,175000,A,1 | |
27 32.0,54.8,145000,A,1 | |
28 33.2,54.9,140000,A,1 | |
29 34.4,55.5,127100,A,1 | |
30 35.5,55.4,100000,A,1 | |
31 36.0,55.5,100000,A,1 | |
32 37.6,55.8,100000,A,1 | |
33 37.7,55.7,100000,R,1 | |
34 37.5,55.7,98000,R,1 | |
35 37.0,55.0,97000,R,1 | |
36 36.8,55.0,96000,R,1 | |
37 35.4,55.3,87000,R,1 | |
38 34.3,55.2,55000,R,1 | |
39 33.3,54.8,37000,R,1 | |
40 32.0,54.6,24000,R,1 | |
41 30.4,54.4,20000,R,1 | |
42 29.2,54.3,20000,R,1 | |
43 28.5,54.2,20000,R,1 | |
44 28.3,54.3,20000,R,1 | |
45 27.5,54.5,20000,R,1 | |
46 26.8,54.3,12000,R,1 | |
47 26.4,54.4,14000,R,1 | |
48 25.0,54.4,8000,R,1 | |
49 24.4,54.4,4000,R,1 | |
50 24.2,54.4,4000,R,1 | |
51 24.1,54.4,4000,R,1""" | |
52 data2 = """\ | |
53 24.0,55.1,60000,A,2 | |
54 24.5,55.2,60000,A,2 | |
55 25.5,54.7,60000,A,2 | |
56 26.6,55.7,40000,A,2 | |
57 27.4,55.6,33000,A,2 | |
58 28.7,55.5,33000,R,2 | |
59 29.2,54.2,30000,R,2 | |
60 28.5,54.1,30000,R,2 | |
61 28.3,54.2,28000,R,2""" | |
62 data3 = """\ | |
63 24.0,55.2,22000,A,3 | |
64 24.5,55.3,22000,A,3 | |
65 24.6,55.8,6000,A,3 | |
66 24.6,55.8,6000,R,3 | |
67 24.2,54.4,6000,R,3 | |
68 24.1,54.4,6000,R,3""" | |
69 cities = """\ | |
70 24.0,55.0,Kowno | |
71 25.3,54.7,Wilna | |
72 26.4,54.4,Smorgoni | |
73 26.8,54.3,Moiodexno | |
74 27.7,55.2,Gloubokoe | |
75 27.6,53.9,Minsk | |
76 28.5,54.3,Studienska | |
77 28.7,55.5,Polotzk | |
78 29.2,54.4,Bobr | |
79 30.2,55.3,Witebsk | |
80 30.4,54.5,Orscha | |
81 30.4,53.9,Mohilow | |
82 32.0,54.8,Smolensk | |
83 33.2,54.9,Dorogobouge | |
84 34.3,55.2,Wixma | |
85 34.4,55.5,Chjat | |
86 36.0,55.5,Mojaisk | |
87 37.6,55.8,Moscou | |
88 36.6,55.3,Tarantino | |
89 36.5,55.0,Malo-Jarosewii""" | |
90 | |
91 c = {} | |
92 for line in cities.split("\n"): | |
93 x, y, name = line.split(",") | |
94 c[name] = (float(x), float(y)) | |
95 | |
96 g = [] | |
97 | |
98 for data in [data1, data2, data3]: | |
99 G = nx.Graph() | |
100 i = 0 | |
101 G.pos = {} # location | |
102 G.pop = {} # size | |
103 last = None | |
104 for line in data.split("\n"): | |
105 x, y, p, r, n = line.split(",") | |
106 G.pos[i] = (float(x), float(y)) | |
107 G.pop[i] = int(p) | |
108 if last is None: | |
109 last = i | |
110 else: | |
111 G.add_edge(i, last, **{r: int(n)}) | |
112 last = i | |
113 i = i + 1 | |
114 g.append(G) | |
115 | |
116 return g, c | |
117 | |
118 | |
119 (g, city) = minard_graph() | |
120 | |
121 plt.figure(1, figsize=(11, 5)) | |
122 plt.clf() | |
123 colors = ["b", "g", "r"] | |
124 for G in g: | |
125 c = colors.pop(0) | |
126 node_size = [int(G.pop[n] / 300.0) for n in G] | |
127 nx.draw_networkx_edges(G, G.pos, edge_color=c, width=4, alpha=0.5) | |
128 nx.draw_networkx_nodes(G, G.pos, node_size=node_size, node_color=c, alpha=0.5) | |
129 nx.draw_networkx_nodes(G, G.pos, node_size=5, node_color="k") | |
130 | |
131 for c in city: | |
132 x, y = city[c] | |
133 plt.text(x, y + 0.1, c) | |
134 plt.show() |