修订版 | f6b0276471cc646ec99f7a1f8808d859faf9f481 (tree) |
---|---|
时间 | 2017-03-21 07:26:17 |
作者 | Lorenzo Isella <lorenzo.isella@gmai...> |
Commiter | Lorenzo Isella |
I added a more sophisticated example.
@@ -4,101 +4,105 @@ | ||
4 | 4 | library(sankey) |
5 | 5 | library(dplyr) |
6 | 6 | |
7 | -## tab <- readRDS("movement_data.RDS") | |
7 | + | |
8 | +source("/home/lorenzo/myprojects-hg/R-codes/stat_lib.R") | |
8 | 9 | |
9 | 10 | |
10 | -tab <- structure(list(home = c("AU", "RU", "AU", "AU", "AR", "AU", "UY", | |
11 | -"IN", "US", "FR", "FR", "RU", "ES", "BE", "FR", "ES", "ES", "US", | |
12 | -"DE", "CA", "PL", "IT", "FR", "AU", "SE", "UK", "SE", "PL", "FR", | |
13 | -"NL", "ES", "NL", "ES", "BR", "FR", "NL", "JP", "HU", "DE", "AU", | |
14 | -"ES", "IN", "CH", "PL", "FR", "DE", "FR", "FR", "HU", "ES", "IT", | |
15 | -"UK", "FR", "SE", "DE", "FR", "DE", "ES", "NL", "UK", "ES", "CH", | |
16 | -"SE", "DE", "FR", "ES", "US", "DE", "AU", "FR", "IT", "IT", "JP", | |
17 | -"ES", "CH", "ES", "AR", "HU", "AT", "ES", "FR", "IN", "AU", "NZ", | |
18 | -"UK", "AU", "CA", "ES", "PL", "IN", "UK", "US", "FR", "BE", "DE", | |
19 | -"ES", "PL", "IE", "BE", "FR", "CH", "RU", "HU", "ES", "FR", "EL", | |
20 | -"IE", "UK", "SI", "DE", "DE", "IT", "EG", "ES", "IT", "IT", "AT", | |
21 | -"ES", "IT", "ES", "ES", "PL", "FR", "IT", "IE", "DE", "NL", "HU", | |
22 | -"CA", "MD", "DE", "CU", "DE", "PT", "NL", "PL", "DE", "DE", "DE", | |
23 | -"PL", "FR", "AR", "NL", "ES", "EL", "FR", "ES", "DE", "NL", "ES", | |
24 | -"DE", "ES", "US", "EL", "FR", "ES", "FR", "UK", "IT", "JP", "CA", | |
25 | -"US", "FR", "IE", "IT", "CZ", "ES", "DE", "AU", "TR", "FR", "FR", | |
26 | -"CH", "SE", "FR", "FR", "BE", "BE", "US", "IT", "IT", "FI", "DE", | |
27 | -"NL", "IL", "US", "FR", "FI", "IN", "FI", "SK", "DE", "ES", "UK", | |
28 | -"UK", "FR", "DE", "SK", "ES", "ES", "DE", "FR", "DE", "JP", "FR", | |
29 | -"US", "ES", "SE", "US", "ES", "UK", "SE", "MX", "NL", "CA", "BE", | |
30 | -"IE", "UK", "FR", "PT", "ES", "CH", "SE", "IT", "HU", "US", "UK", | |
31 | -"NL", "AT", "ES", "CA", "ES", "FR", "NL", "DE", "IN", "RU", "NL", | |
32 | -"FR", "NL", "ES", "US", "SE", "FR", "FR", "IL", "US", "DE", "US", | |
33 | -"IT", "AU", "DE", "IE", "AU", "RU", "JP", "FR", "UK", "DE", "AR", | |
34 | -"FR", "ES", "SK", "IT", "SE"), host = c("DE", "FR", "UK", "UK", | |
35 | -"CH", "IE", "IT", "FI", "DE", "FR", "FR", "RU", "ES", "BE", "FR", | |
36 | -"FR", "DE", "UK", "UK", "DK", "UK", "FR", "DE", "SE", "UK", "DE", | |
37 | -"UK", "SE", "BE", "NL", "IT", "NO", "CH", "ES", "FR", "UK", "UK", | |
38 | -"FR", "UK", "SE", "UK", "CH", "UK", "DE", "SE", "UK", "FR", "DE", | |
39 | -"PT", "UK", "FR", "SE", "UK", "UK", "ES", "UK", "SE", "UK", "NL", | |
40 | -"DE", "UK", "DE", "ES", "DK", "CH", "ES", "FR", "UK", "UK", "UK", | |
41 | -"ES", "IT", "UK", "UK", "UK", "UK", "BE", "FR", "BE", "UK", "FR", | |
42 | -"UK", "ES", "NO", "ES", "FR", "UK", "DE", "UK", "UK", "ES", "UK", | |
43 | -"UK", "CH", "IE", "UK", "DE", "UK", "NL", "UK", "UK", "CZ", "SE", | |
44 | -"UK", "UK", "DE", "DK", "UK", "ES", "IL", "UK", "CH", "FI", "UK", | |
45 | -"FR", "UK", "DE", "ES", "FR", "UK", "DE", "UK", "DE", "FR", "UK", | |
46 | -"CH", "UK", "FI", "FR", "FR", "UK", "IT", "UK", "PT", "CH", "ES", | |
47 | -"CH", "NO", "CH", "UK", "CH", "UK", "CH", "CH", "EL", "CH", "UK", | |
48 | -"UK", "UK", "UK", "FR", "UK", "CH", "DE", "UK", "IE", "UK", "DK", | |
49 | -"UK", "ES", "UK", "FR", "FR", "UK", "UK", "SI", "ES", "UK", "SE", | |
50 | -"UK", "CH", "UK", "DE", "CH", "ES", "UK", "CH", "PT", "FR", "UK", | |
51 | -"CH", "UK", "CH", "UK", "UK", "UK", "UK", "CH", "UK", "DE", "DE", | |
52 | -"FR", "UK", "UK", "ES", "UK", "DE", "CZ", "NL", "UK", "CH", "IE", | |
53 | -"UK", "UK", "DE", "UK", "UK", "UK", "UK", "ES", "CA", "ES", "UK", | |
54 | -"DE", "SE", "CH", "ES", "FR", "UK", "IE", "UK", "UK", "CH", "IT", | |
55 | -"UK", "FR", "NL", "NO", "AT", "ES", "UK", "UK", "CH", "FR", "UK", | |
56 | -"DE", "NL", "ES", "DK", "UK", "UK", "SE", "DE", "DE", "FR", "FR", | |
57 | -"CH", "UK", "NL", "ES", "UK", "UK", "UK", "UK", "UK", "UK", "FR", | |
58 | -"FR", "UK", "SI", "ES", "DK", "NL", "UK", "UK"), author = c(2, | |
59 | -4, 5, 7, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 22, 23, 24, 26, | |
60 | -27, 28, 29, 30, 31, 32, 36, 37, 39, 40, 41, 42, 43, 47, 48, 50, | |
61 | -51, 52, 55, 56, 58, 60, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, | |
62 | -73, 75, 77, 79, 80, 81, 82, 84, 85, 86, 88, 89, 90, 91, 92, 93, | |
63 | -96, 99, 101, 102, 103, 104, 108, 109, 110, 111, 112, 113, 114, | |
64 | -115, 116, 118, 119, 120, 122, 123, 125, 126, 128, 129, 130, 131, | |
65 | -134, 136, 138, 139, 140, 141, 142, 145, 147, 148, 149, 150, 152, | |
66 | -154, 156, 157, 160, 161, 164, 165, 166, 167, 169, 171, 172, 173, | |
67 | -174, 175, 177, 178, 182, 183, 184, 186, 190, 192, 193, 194, 195, | |
68 | -196, 199, 200, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, | |
69 | -213, 214, 216, 217, 221, 222, 223, 224, 225, 226, 227, 229, 232, | |
70 | -233, 234, 235, 236, 237, 238, 240, 241, 242, 244, 245, 247, 248, | |
71 | -250, 251, 252, 254, 255, 258, 259, 261, 262, 266, 267, 270, 272, | |
72 | -273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 287, 288, | |
73 | -289, 290, 291, 292, 293, 294, 295, 296, 298, 300, 303, 304, 305, | |
74 | -307, 308, 309, 310, 312, 313, 314, 316, 317, 318, 319, 320, 327, | |
75 | -328, 329, 330, 331, 332, 334, 336, 337, 339, 340, 341, 342, 343, | |
76 | -344, 346, 347, 348, 349, 350, 352, 355, 357, 358, 359, 362, 363, | |
77 | -364, 365, 366, 368, 369, 372, 374, 376, 377, 378, 379, 380, 381, | |
78 | -383, 385, 386, 387)), .Names = c("home", "host", "author"), row.names = c(2L, | |
79 | -3L, 4L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, | |
80 | -18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 28L, 29L, 30L, 31L, | |
81 | -32L, 33L, 34L, 35L, 36L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, | |
82 | -46L, 49L, 50L, 51L, 52L, 53L, 54L, 55L, 56L, 57L, 58L, 59L, 60L, | |
83 | -61L, 62L, 63L, 64L, 65L, 66L, 67L, 68L, 69L, 70L, 71L, 72L, 73L, | |
84 | -74L, 75L, 76L, 77L, 78L, 80L, 81L, 82L, 83L, 84L, 85L, 86L, 87L, | |
85 | -88L, 89L, 90L, 91L, 92L, 93L, 94L, 95L, 96L, 97L, 98L, 99L, 100L, | |
86 | -101L, 102L, 103L, 104L, 105L, 106L, 107L, 108L, 109L, 110L, 111L, | |
87 | -112L, 113L, 114L, 115L, 117L, 118L, 119L, 120L, 121L, 122L, 123L, | |
88 | -125L, 126L, 127L, 128L, 129L, 130L, 131L, 132L, 133L, 134L, 135L, | |
89 | -136L, 137L, 138L, 139L, 140L, 141L, 142L, 143L, 144L, 145L, 146L, | |
90 | -147L, 148L, 150L, 151L, 152L, 153L, 154L, 155L, 156L, 158L, 159L, | |
91 | -160L, 161L, 162L, 163L, 164L, 165L, 166L, 167L, 170L, 171L, 172L, | |
92 | -173L, 174L, 175L, 176L, 177L, 178L, 179L, 180L, 181L, 182L, 183L, | |
93 | -184L, 185L, 186L, 187L, 188L, 189L, 190L, 191L, 192L, 194L, 195L, | |
94 | -196L, 197L, 198L, 199L, 200L, 201L, 202L, 203L, 204L, 205L, 206L, | |
95 | -207L, 208L, 210L, 211L, 212L, 213L, 214L, 215L, 216L, 217L, 218L, | |
96 | -219L, 220L, 222L, 223L, 224L, 225L, 226L, 227L, 228L, 229L, 231L, | |
97 | -232L, 233L, 235L, 236L, 237L, 238L, 239L, 240L, 241L, 242L, 243L, | |
98 | -244L, 245L, 246L, 247L, 248L, 249L, 250L, 251L, 252L, 253L, 254L, | |
99 | -255L, 256L, 257L, 258L, 259L, 260L, 261L, 262L, 263L, 264L, 265L, | |
100 | -266L, 267L, 268L, 269L, 270L, 271L, 272L, 273L, 274L, 275L, 276L, | |
101 | -277L, 278L, 279L, 280L, 282L, 283L, 284L), class = "data.frame") | |
11 | +tab <- readRDS("movement_data.RDS") | |
12 | + | |
13 | + | |
14 | +## tab <- structure(list(home = c("AU", "RU", "AU", "AU", "AR", "AU", "UY", | |
15 | +## "IN", "US", "FR", "FR", "RU", "ES", "BE", "FR", "ES", "ES", "US", | |
16 | +## "DE", "CA", "PL", "IT", "FR", "AU", "SE", "UK", "SE", "PL", "FR", | |
17 | +## "NL", "ES", "NL", "ES", "BR", "FR", "NL", "JP", "HU", "DE", "AU", | |
18 | +## "ES", "IN", "CH", "PL", "FR", "DE", "FR", "FR", "HU", "ES", "IT", | |
19 | +## "UK", "FR", "SE", "DE", "FR", "DE", "ES", "NL", "UK", "ES", "CH", | |
20 | +## "SE", "DE", "FR", "ES", "US", "DE", "AU", "FR", "IT", "IT", "JP", | |
21 | +## "ES", "CH", "ES", "AR", "HU", "AT", "ES", "FR", "IN", "AU", "NZ", | |
22 | +## "UK", "AU", "CA", "ES", "PL", "IN", "UK", "US", "FR", "BE", "DE", | |
23 | +## "ES", "PL", "IE", "BE", "FR", "CH", "RU", "HU", "ES", "FR", "EL", | |
24 | +## "IE", "UK", "SI", "DE", "DE", "IT", "EG", "ES", "IT", "IT", "AT", | |
25 | +## "ES", "IT", "ES", "ES", "PL", "FR", "IT", "IE", "DE", "NL", "HU", | |
26 | +## "CA", "MD", "DE", "CU", "DE", "PT", "NL", "PL", "DE", "DE", "DE", | |
27 | +## "PL", "FR", "AR", "NL", "ES", "EL", "FR", "ES", "DE", "NL", "ES", | |
28 | +## "DE", "ES", "US", "EL", "FR", "ES", "FR", "UK", "IT", "JP", "CA", | |
29 | +## "US", "FR", "IE", "IT", "CZ", "ES", "DE", "AU", "TR", "FR", "FR", | |
30 | +## "CH", "SE", "FR", "FR", "BE", "BE", "US", "IT", "IT", "FI", "DE", | |
31 | +## "NL", "IL", "US", "FR", "FI", "IN", "FI", "SK", "DE", "ES", "UK", | |
32 | +## "UK", "FR", "DE", "SK", "ES", "ES", "DE", "FR", "DE", "JP", "FR", | |
33 | +## "US", "ES", "SE", "US", "ES", "UK", "SE", "MX", "NL", "CA", "BE", | |
34 | +## "IE", "UK", "FR", "PT", "ES", "CH", "SE", "IT", "HU", "US", "UK", | |
35 | +## "NL", "AT", "ES", "CA", "ES", "FR", "NL", "DE", "IN", "RU", "NL", | |
36 | +## "FR", "NL", "ES", "US", "SE", "FR", "FR", "IL", "US", "DE", "US", | |
37 | +## "IT", "AU", "DE", "IE", "AU", "RU", "JP", "FR", "UK", "DE", "AR", | |
38 | +## "FR", "ES", "SK", "IT", "SE"), host = c("DE", "FR", "UK", "UK", | |
39 | +## "CH", "IE", "IT", "FI", "DE", "FR", "FR", "RU", "ES", "BE", "FR", | |
40 | +## "FR", "DE", "UK", "UK", "DK", "UK", "FR", "DE", "SE", "UK", "DE", | |
41 | +## "UK", "SE", "BE", "NL", "IT", "NO", "CH", "ES", "FR", "UK", "UK", | |
42 | +## "FR", "UK", "SE", "UK", "CH", "UK", "DE", "SE", "UK", "FR", "DE", | |
43 | +## "PT", "UK", "FR", "SE", "UK", "UK", "ES", "UK", "SE", "UK", "NL", | |
44 | +## "DE", "UK", "DE", "ES", "DK", "CH", "ES", "FR", "UK", "UK", "UK", | |
45 | +## "ES", "IT", "UK", "UK", "UK", "UK", "BE", "FR", "BE", "UK", "FR", | |
46 | +## "UK", "ES", "NO", "ES", "FR", "UK", "DE", "UK", "UK", "ES", "UK", | |
47 | +## "UK", "CH", "IE", "UK", "DE", "UK", "NL", "UK", "UK", "CZ", "SE", | |
48 | +## "UK", "UK", "DE", "DK", "UK", "ES", "IL", "UK", "CH", "FI", "UK", | |
49 | +## "FR", "UK", "DE", "ES", "FR", "UK", "DE", "UK", "DE", "FR", "UK", | |
50 | +## "CH", "UK", "FI", "FR", "FR", "UK", "IT", "UK", "PT", "CH", "ES", | |
51 | +## "CH", "NO", "CH", "UK", "CH", "UK", "CH", "CH", "EL", "CH", "UK", | |
52 | +## "UK", "UK", "UK", "FR", "UK", "CH", "DE", "UK", "IE", "UK", "DK", | |
53 | +## "UK", "ES", "UK", "FR", "FR", "UK", "UK", "SI", "ES", "UK", "SE", | |
54 | +## "UK", "CH", "UK", "DE", "CH", "ES", "UK", "CH", "PT", "FR", "UK", | |
55 | +## "CH", "UK", "CH", "UK", "UK", "UK", "UK", "CH", "UK", "DE", "DE", | |
56 | +## "FR", "UK", "UK", "ES", "UK", "DE", "CZ", "NL", "UK", "CH", "IE", | |
57 | +## "UK", "UK", "DE", "UK", "UK", "UK", "UK", "ES", "CA", "ES", "UK", | |
58 | +## "DE", "SE", "CH", "ES", "FR", "UK", "IE", "UK", "UK", "CH", "IT", | |
59 | +## "UK", "FR", "NL", "NO", "AT", "ES", "UK", "UK", "CH", "FR", "UK", | |
60 | +## "DE", "NL", "ES", "DK", "UK", "UK", "SE", "DE", "DE", "FR", "FR", | |
61 | +## "CH", "UK", "NL", "ES", "UK", "UK", "UK", "UK", "UK", "UK", "FR", | |
62 | +## "FR", "UK", "SI", "ES", "DK", "NL", "UK", "UK"), author = c(2, | |
63 | +## 4, 5, 7, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 22, 23, 24, 26, | |
64 | +## 27, 28, 29, 30, 31, 32, 36, 37, 39, 40, 41, 42, 43, 47, 48, 50, | |
65 | +## 51, 52, 55, 56, 58, 60, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, | |
66 | +## 73, 75, 77, 79, 80, 81, 82, 84, 85, 86, 88, 89, 90, 91, 92, 93, | |
67 | +## 96, 99, 101, 102, 103, 104, 108, 109, 110, 111, 112, 113, 114, | |
68 | +## 115, 116, 118, 119, 120, 122, 123, 125, 126, 128, 129, 130, 131, | |
69 | +## 134, 136, 138, 139, 140, 141, 142, 145, 147, 148, 149, 150, 152, | |
70 | +## 154, 156, 157, 160, 161, 164, 165, 166, 167, 169, 171, 172, 173, | |
71 | +## 174, 175, 177, 178, 182, 183, 184, 186, 190, 192, 193, 194, 195, | |
72 | +## 196, 199, 200, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, | |
73 | +## 213, 214, 216, 217, 221, 222, 223, 224, 225, 226, 227, 229, 232, | |
74 | +## 233, 234, 235, 236, 237, 238, 240, 241, 242, 244, 245, 247, 248, | |
75 | +## 250, 251, 252, 254, 255, 258, 259, 261, 262, 266, 267, 270, 272, | |
76 | +## 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 287, 288, | |
77 | +## 289, 290, 291, 292, 293, 294, 295, 296, 298, 300, 303, 304, 305, | |
78 | +## 307, 308, 309, 310, 312, 313, 314, 316, 317, 318, 319, 320, 327, | |
79 | +## 328, 329, 330, 331, 332, 334, 336, 337, 339, 340, 341, 342, 343, | |
80 | +## 344, 346, 347, 348, 349, 350, 352, 355, 357, 358, 359, 362, 363, | |
81 | +## 364, 365, 366, 368, 369, 372, 374, 376, 377, 378, 379, 380, 381, | |
82 | +## 383, 385, 386, 387)), .Names = c("home", "host", "author"), row.names = c(2L, | |
83 | +## 3L, 4L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, | |
84 | +## 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 28L, 29L, 30L, 31L, | |
85 | +## 32L, 33L, 34L, 35L, 36L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, | |
86 | +## 46L, 49L, 50L, 51L, 52L, 53L, 54L, 55L, 56L, 57L, 58L, 59L, 60L, | |
87 | +## 61L, 62L, 63L, 64L, 65L, 66L, 67L, 68L, 69L, 70L, 71L, 72L, 73L, | |
88 | +## 74L, 75L, 76L, 77L, 78L, 80L, 81L, 82L, 83L, 84L, 85L, 86L, 87L, | |
89 | +## 88L, 89L, 90L, 91L, 92L, 93L, 94L, 95L, 96L, 97L, 98L, 99L, 100L, | |
90 | +## 101L, 102L, 103L, 104L, 105L, 106L, 107L, 108L, 109L, 110L, 111L, | |
91 | +## 112L, 113L, 114L, 115L, 117L, 118L, 119L, 120L, 121L, 122L, 123L, | |
92 | +## 125L, 126L, 127L, 128L, 129L, 130L, 131L, 132L, 133L, 134L, 135L, | |
93 | +## 136L, 137L, 138L, 139L, 140L, 141L, 142L, 143L, 144L, 145L, 146L, | |
94 | +## 147L, 148L, 150L, 151L, 152L, 153L, 154L, 155L, 156L, 158L, 159L, | |
95 | +## 160L, 161L, 162L, 163L, 164L, 165L, 166L, 167L, 170L, 171L, 172L, | |
96 | +## 173L, 174L, 175L, 176L, 177L, 178L, 179L, 180L, 181L, 182L, 183L, | |
97 | +## 184L, 185L, 186L, 187L, 188L, 189L, 190L, 191L, 192L, 194L, 195L, | |
98 | +## 196L, 197L, 198L, 199L, 200L, 201L, 202L, 203L, 204L, 205L, 206L, | |
99 | +## 207L, 208L, 210L, 211L, 212L, 213L, 214L, 215L, 216L, 217L, 218L, | |
100 | +## 219L, 220L, 222L, 223L, 224L, 225L, 226L, 227L, 228L, 229L, 231L, | |
101 | +## 232L, 233L, 235L, 236L, 237L, 238L, 239L, 240L, 241L, 242L, 243L, | |
102 | +## 244L, 245L, 246L, 247L, 248L, 249L, 250L, 251L, 252L, 253L, 254L, | |
103 | +## 255L, 256L, 257L, 258L, 259L, 260L, 261L, 262L, 263L, 264L, 265L, | |
104 | +## 266L, 267L, 268L, 269L, 270L, 271L, 272L, 273L, 274L, 275L, 276L, | |
105 | +## 277L, 278L, 279L, 280L, 282L, 283L, 284L), class = "data.frame") | |
102 | 106 | |
103 | 107 | |
104 | 108 |
@@ -132,54 +136,54 @@ | ||
132 | 136 | tab_un$weight <- weight$n |
133 | 137 | |
134 | 138 | |
135 | -## classification <- read.csv("country-classification.csv") | |
139 | +classification <- read.csv("country-classification.csv") | |
136 | 140 | |
137 | 141 | |
138 | -classification <- structure(list(Country.codes = structure(c(25L, 57L, 22L, 4L, | |
139 | -40L, 35L, 15L, 16L, 8L, 2L, 21L, 49L, 29L, 41L, 17L, 34L, 36L, | |
140 | -43L, 14L, 52L, 24L, 51L, 23L, 45L, 5L, 38L, 13L, 19L, 30L, 20L, | |
141 | -44L, 1L, 3L, 6L, 7L, 9L, 10L, 12L, 18L, 27L, 26L, 28L, 31L, 32L, | |
142 | -33L, 39L, 42L, 46L, 53L, 54L, 55L, 56L, 58L, 59L, 11L, 37L, 50L, | |
143 | -48L, 47L), .Label = c("AR", "AT", "AU", "BE", "BG", "BR", "CA", | |
144 | -"CH", "CL", "CN", "CU", "CV", "CY", "CZ", "DE", "DK", "EE", "EG", | |
145 | -"EL", "ES", "FI", "FR", "HR", "HU", "IE", "IL", "IN", "IR", "IS", | |
146 | -"IT", "JP", "KH", "KR", "LT", "LU", "LV", "MD", "MT", "MX", "NL", | |
147 | -"NO", "NZ", "PL", "PT", "RO", "RU", "SA", "SB", "SE", "SGP", | |
148 | -"SI", "SK", "SY", "TN", "TR", "UA", "UK", "US", "UY"), class = "factor"), | |
149 | - Country.Name = structure(c(27L, 57L, 20L, 4L, 37L, 33L, 21L, | |
150 | - 16L, 52L, 3L, 19L, 51L, 24L, 39L, 18L, 32L, 31L, 40L, 15L, | |
151 | - 46L, 23L, 47L, 11L, 42L, 6L, 34L, 14L, 22L, 29L, 50L, 41L, | |
152 | - 1L, 2L, 5L, 8L, 9L, 10L, 13L, 17L, 25L, 28L, 26L, 30L, 7L, | |
153 | - 49L, 35L, 38L, 43L, 53L, 54L, 55L, 56L, 59L, 58L, 12L, 36L, | |
154 | - 45L, 44L, 48L), .Label = c("ARGENTINA", "AUSTRALIA", "AUSTRIA", | |
155 | - "BELGIUM", "BRAZIL", "BULGARIA", "CAMBODIA", "CANADA", "CHILE", | |
156 | - "CHINA", "CROATIA", "CUBA", "CV", "CYPRUS", "CZECH REPUBLIC", | |
157 | - "DENMARK", "EGYPT", "ESTONIA", "FINLAND", "FRANCE", "GERMANY", | |
158 | - "GREECE", "HUNGARY", "ICELAND", "INDIA", "IRAN", "IRELAND", | |
159 | - "ISRAEL", "ITALY", "JAPAN", "LATVIA", "LITHUANIA", "LUXEMBOURG", | |
160 | - "MALTA", "MEXICO", "MOLDOVA", "NETHERLANDS", "NEW ZEALAND", | |
161 | - "NORWAY", "POLAND", "PORTUGAL", "ROMANIA", "RUSSIA", "SERBIA", | |
162 | - "SINGAPORE", "SLOVAKIA", "SLOVENIA", "SOUTH AFRICA", "SOUTH KOREA", | |
163 | - "SPAIN", "SWEDEN", "SWITZERLAND", "SYRIA", "TUNISIA", "TURKEY", | |
164 | - "UKRAINE", "UNITED KINGDOM", "URUGUAY", "USA"), class = "factor"), | |
165 | - Country.codes.1 = structure(c(25L, 57L, 22L, 4L, 40L, 35L, | |
166 | - 15L, 16L, 8L, 2L, 21L, 49L, 29L, 41L, 17L, 34L, 36L, 43L, | |
167 | - 14L, 52L, 24L, 51L, 23L, 45L, 5L, 38L, 13L, 19L, 30L, 20L, | |
168 | - 44L, 1L, 3L, 6L, 7L, 9L, 10L, 12L, 18L, 27L, 26L, 28L, 31L, | |
169 | - 32L, 33L, 39L, 42L, 46L, 53L, 54L, 55L, 56L, 58L, 59L, 11L, | |
170 | - 37L, 50L, 48L, 47L), .Label = c("AR", "AT", "AU", "BE", "BG", | |
171 | - "BR", "CA", "CH", "CL", "CN", "CU", "CV", "CY", "CZ", "DE", | |
172 | - "DK", "EE", "EG", "EL", "ES", "FI", "FR", "HR", "HU", "IE", | |
173 | - "IL", "IN", "IR", "IS", "IT", "JP", "KH", "KR", "LT", "LU", | |
174 | - "LV", "MD", "MT", "MX", "NL", "NO", "NZ", "PL", "PT", "RO", | |
175 | - "RU", "SA", "SB", "SE", "SGP", "SI", "SK", "SY", "TN", "TR", | |
176 | - "UA", "UK", "US", "UY"), class = "factor"), Region.code = c(1L, | |
177 | - 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, | |
178 | - 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, | |
179 | - 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, | |
180 | - 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L)), .Names = c("Country.codes", | |
181 | -"Country.Name", "Country.codes.1", "Region.code"), class = "data.frame", row.names = c(NA, | |
182 | --59L)) | |
142 | +## classification <- structure(list(Country.codes = structure(c(25L, 57L, 22L, 4L, | |
143 | +## 40L, 35L, 15L, 16L, 8L, 2L, 21L, 49L, 29L, 41L, 17L, 34L, 36L, | |
144 | +## 43L, 14L, 52L, 24L, 51L, 23L, 45L, 5L, 38L, 13L, 19L, 30L, 20L, | |
145 | +## 44L, 1L, 3L, 6L, 7L, 9L, 10L, 12L, 18L, 27L, 26L, 28L, 31L, 32L, | |
146 | +## 33L, 39L, 42L, 46L, 53L, 54L, 55L, 56L, 58L, 59L, 11L, 37L, 50L, | |
147 | +## 48L, 47L), .Label = c("AR", "AT", "AU", "BE", "BG", "BR", "CA", | |
148 | +## "CH", "CL", "CN", "CU", "CV", "CY", "CZ", "DE", "DK", "EE", "EG", | |
149 | +## "EL", "ES", "FI", "FR", "HR", "HU", "IE", "IL", "IN", "IR", "IS", | |
150 | +## "IT", "JP", "KH", "KR", "LT", "LU", "LV", "MD", "MT", "MX", "NL", | |
151 | +## "NO", "NZ", "PL", "PT", "RO", "RU", "SA", "SB", "SE", "SGP", | |
152 | +## "SI", "SK", "SY", "TN", "TR", "UA", "UK", "US", "UY"), class = "factor"), | |
153 | +## Country.Name = structure(c(27L, 57L, 20L, 4L, 37L, 33L, 21L, | |
154 | +## 16L, 52L, 3L, 19L, 51L, 24L, 39L, 18L, 32L, 31L, 40L, 15L, | |
155 | +## 46L, 23L, 47L, 11L, 42L, 6L, 34L, 14L, 22L, 29L, 50L, 41L, | |
156 | +## 1L, 2L, 5L, 8L, 9L, 10L, 13L, 17L, 25L, 28L, 26L, 30L, 7L, | |
157 | +## 49L, 35L, 38L, 43L, 53L, 54L, 55L, 56L, 59L, 58L, 12L, 36L, | |
158 | +## 45L, 44L, 48L), .Label = c("ARGENTINA", "AUSTRALIA", "AUSTRIA", | |
159 | +## "BELGIUM", "BRAZIL", "BULGARIA", "CAMBODIA", "CANADA", "CHILE", | |
160 | +## "CHINA", "CROATIA", "CUBA", "CV", "CYPRUS", "CZECH REPUBLIC", | |
161 | +## "DENMARK", "EGYPT", "ESTONIA", "FINLAND", "FRANCE", "GERMANY", | |
162 | +## "GREECE", "HUNGARY", "ICELAND", "INDIA", "IRAN", "IRELAND", | |
163 | +## "ISRAEL", "ITALY", "JAPAN", "LATVIA", "LITHUANIA", "LUXEMBOURG", | |
164 | +## "MALTA", "MEXICO", "MOLDOVA", "NETHERLANDS", "NEW ZEALAND", | |
165 | +## "NORWAY", "POLAND", "PORTUGAL", "ROMANIA", "RUSSIA", "SERBIA", | |
166 | +## "SINGAPORE", "SLOVAKIA", "SLOVENIA", "SOUTH AFRICA", "SOUTH KOREA", | |
167 | +## "SPAIN", "SWEDEN", "SWITZERLAND", "SYRIA", "TUNISIA", "TURKEY", | |
168 | +## "UKRAINE", "UNITED KINGDOM", "URUGUAY", "USA"), class = "factor"), | |
169 | +## Country.codes.1 = structure(c(25L, 57L, 22L, 4L, 40L, 35L, | |
170 | +## 15L, 16L, 8L, 2L, 21L, 49L, 29L, 41L, 17L, 34L, 36L, 43L, | |
171 | +## 14L, 52L, 24L, 51L, 23L, 45L, 5L, 38L, 13L, 19L, 30L, 20L, | |
172 | +## 44L, 1L, 3L, 6L, 7L, 9L, 10L, 12L, 18L, 27L, 26L, 28L, 31L, | |
173 | +## 32L, 33L, 39L, 42L, 46L, 53L, 54L, 55L, 56L, 58L, 59L, 11L, | |
174 | +## 37L, 50L, 48L, 47L), .Label = c("AR", "AT", "AU", "BE", "BG", | |
175 | +## "BR", "CA", "CH", "CL", "CN", "CU", "CV", "CY", "CZ", "DE", | |
176 | +## "DK", "EE", "EG", "EL", "ES", "FI", "FR", "HR", "HU", "IE", | |
177 | +## "IL", "IN", "IR", "IS", "IT", "JP", "KH", "KR", "LT", "LU", | |
178 | +## "LV", "MD", "MT", "MX", "NL", "NO", "NZ", "PL", "PT", "RO", | |
179 | +## "RU", "SA", "SB", "SE", "SGP", "SI", "SK", "SY", "TN", "TR", | |
180 | +## "UA", "UK", "US", "UY"), class = "factor"), Region.code = c(1L, | |
181 | +## 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, | |
182 | +## 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, | |
183 | +## 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, | |
184 | +## 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L)), .Names = c("Country.codes", | |
185 | +## "Country.Name", "Country.codes.1", "Region.code"), class = "data.frame", row.names = c(NA, | |
186 | +## -59L)) | |
183 | 187 | |
184 | 188 | |
185 | 189 | edges <- select(tab_un, c(home, host)) |
@@ -200,11 +204,21 @@ | ||
200 | 204 | |
201 | 205 | nodes$size <- c(as.numeric(nodes.out), as.numeric(nodes.in)) |
202 | 206 | |
203 | -res <- make_sankey(nodes=nodes, edges = edges) | |
207 | +## res <- make_sankey(nodes=nodes, edges = edges) | |
204 | 208 | |
205 | -pdf("riverplot.pdf") | |
206 | -sankey(res) | |
207 | -dev.off() | |
209 | +## pdf("riverplot.pdf") | |
210 | +## sankey(res) | |
211 | +## dev.off() | |
212 | + | |
213 | + | |
214 | +nodes.country <- nodes | |
215 | +edges.country <- edges | |
216 | + | |
217 | +edges.country$host <- substrRight(edges.country$host, 2) | |
218 | + | |
219 | +edges.country$home <- substrRight(edges.country$home, 2) | |
220 | + | |
221 | + | |
208 | 222 | |
209 | 223 | ##################################################################### |
210 | 224 | ##################################################################### |
@@ -241,6 +255,27 @@ | ||
241 | 255 | tab$host[tab$host %in% sel_row ] <- "RoW" |
242 | 256 | |
243 | 257 | |
258 | +edges.country$home <- edges.country$host | |
259 | + | |
260 | + | |
261 | +edges.country$home[edges.country$home %in% sel_fp ] <- "FP" | |
262 | +edges.country$home[edges.country$home %in% sel_esif ] <- "ESIF" | |
263 | +edges.country$home[edges.country$home %in% sel_row ] <- "RoW" | |
264 | + | |
265 | + | |
266 | +### the starting point of the country edges is the *host* country | |
267 | +## because I am not representing a movement of people from a place to another | |
268 | +## but just breaking up the macro destination area by country. | |
269 | + | |
270 | +edges.country$home <- paste("to",edges.country$home, sep=" " ) | |
271 | + | |
272 | + | |
273 | + | |
274 | +## what matters is the total flow that reaches every country, so I aggregate the | |
275 | +## edges.country every time the couple home-host country is the same. | |
276 | + | |
277 | +edges.country <- aggregate(weight ~ home + host, data=edges.country, sum) | |
278 | + | |
244 | 279 | |
245 | 280 | nodes.out <- table(tab$home) |
246 | 281 | nodes.in <- table(tab$host) |
@@ -301,9 +336,55 @@ | ||
301 | 336 | dev.off() |
302 | 337 | |
303 | 338 | |
339 | +######################################################################### | |
340 | +######################################################################### | |
341 | +######################################################################### | |
342 | +######################################################################### | |
343 | +######################################################################### | |
344 | +######################################################################### | |
304 | 345 | |
305 | 346 | |
306 | 347 | |
348 | +edges <- rbind(edges, edges.country) | |
349 | + | |
350 | + | |
351 | +sel <- grep("to", nodes.country$ID) | |
352 | + | |
353 | +nodes.country <- nodes.country[sel, ] | |
354 | + | |
355 | +nodes.country$ID <- substrRight(nodes.country$ID, 2) | |
356 | + | |
357 | +nodes.country$col <- "red" | |
358 | + | |
359 | + | |
360 | + | |
361 | +sel_fp <- classification$Country.codes[classification$Region.code==1] | |
362 | + | |
363 | +sel_fp <- as.character(sel_fp) | |
364 | + | |
365 | + | |
366 | +sel_esif <- classification$Country.codes[classification$Region.code==2] | |
367 | + | |
368 | +sel_esif <- as.character(sel_esif) | |
369 | + | |
370 | + | |
371 | +sel_row <- classification$Country.codes[classification$Region.code==3] | |
372 | + | |
373 | +sel_row <- as.character(sel_row) | |
374 | + | |
375 | + | |
376 | + | |
377 | +nodes.country$col[nodes.country$ID %in% sel_esif] <- "blue" | |
378 | +nodes.country$col[nodes.country$ID %in% sel_row] <- "darkgreen" | |
379 | + | |
380 | +nodes <- rbind(nodes, nodes.country) | |
381 | + | |
382 | + | |
383 | +res <- make_sankey(nodes=nodes, edges = edges) | |
384 | + | |
385 | +pdf("riverplot_macro_complete.pdf") | |
386 | +sankey(res) | |
387 | +dev.off() | |
307 | 388 | |
308 | 389 | |
309 | 390 | print("So far so good") |