I am currently in the process of visualizing diplomatic relations between the world's countries conditioned on the placement of diplomatic mission e.g. embassies.
The data I use can be located in a reproducible way at the following web-address: http://www.correlatesofwar.org/data-sets/diplomatic-exchange
The variables in this dataset are as follows:
ccode1
: state number of country 1ccode2
: state number of country 2year
- Year of observationDR_at_1
- Diplomatic representation level of side 2 at side 1 (see below)DR_at_2
- Diplomatic representation level of side 1 at side 2 (see below)DE
- Any diplomatic exchange between side 1 and side 2 (see below)version
- Current version of the data set
Below you will find an extract of the adjacency table that shows diplomatic connections between countries as well as data for longitude and latitude for each country in a separate dataframe. Please note that the connections between the countries are hypothetical while the geographic data is accurate.
country1
country2 1' 2' 3' 4' 5' 6'
1 0 1 0 0 0 0
2 1 0 1 0 0 0
3 0 0 0 0 1 1
4 1 0 1 0 1 1
5 0 1 0 0 0 1
6 0 0 1 0 1 0
Countryno. Country x (lat) y (long)
1 Afghanistan 66.004 33.835
2 Australia 134.49 -25.73288
3 Belgium 4.64 50.6398
4 Austria 14.121 47.585
5 Bangladesh 90.238 23.860
6 Belarus 28.03 53.5310
You can import the data using the following dput functions:
Geographic data:
World_df <- structure(list(Country = c("Aruba", "Afghanistan", "Angola",
"Anguilla", "Albania", "Aland", "Andorra", "United Arab Emirates",
"Argentina", "Armenia", "American Samoa", "Antarctica", "Ashmore and Cartier Islands",
"French Southern and Antarctic Lands", "Antigua and Barbuda",
"Australia", "Austria", "Azerbaijan", "Burundi", "Belgium", "Benin",
"Burkina Faso", "Bangladesh", "Bulgaria", "Bahrain", "The Bahamas",
"Bosnia and Herzegovina", "Saint Barthelemy", "Belarus", "Belize",
"Bermuda", "Bolivia", "Brazil", "Barbados", "Brunei", "Bhutan",
"Botswana", "Central African Republic", "Canada", "Switzerland",
"Chile", "China", "Ivory Coast", "Cameroon", "Democratic Republic of the Congo",
"Republic of the Congo", "Cook Islands", "Colombia", "Comoros",
"Cape Verde", "Costa Rica", "Cuba", "Curacao", "Cayman Islands",
"Northern Cyprus", "Cyprus", "Czech Republic", "Germany", "Djibouti",
"Dominica", "Denmark", "Dominican Republic", "Algeria", "Ecuador",
"Egypt", "Eritrea", "Spain", "Estonia", "Ethiopia", "Finland",
"Fiji", "Falkland Islands", "France", "Faroe Islands", "Federated States of Micronesia",
"Gabon", "Gaza", "United Kingdom", "Georgia", "Guernsey", "Ghana",
"Guinea", "Gambia", "Guinea Bissau", "Equatorial Guinea", "Greece",
"Grenada", "Greenland", "Guatemala", "Guam", "Guyana", "Hong Kong S.A.R.",
"Heard Island and McDonald Islands", "Honduras", "Croatia", "Haiti",
"Hungary", "Indonesia", "Isle of Man", "India", "Indian Ocean Territories",
"British Indian Ocean Territory", "Ireland", "Iran", "Iraq",
"Iceland", "Israel", "Italy", "Jamaica", "Jersey", "Jordan",
"Japan", "Siachen Glacier", "Kazakhstan", "Kenya", "Kyrgyzstan",
"Cambodia", "Kiribati", "Saint Kitts and Nevis", "South Korea",
"Kosovo", "Kuwait", "Laos", "Lebanon", "Liberia", "Libya", "Saint Lucia",
"Liechtenstein", "Sri Lanka", "Lesotho", "Lithuania", "Luxembourg",
"Latvia", "Macau S.A.R", "Saint Martin", "Morocco", "Monaco",
"Moldova", "Madagascar", "Maldives", "Mexico", "Marshall Islands",
"Macedonia", "Mali", "Malta", "Myanmar", "Montenegro", "Mongolia",
"Northern Mariana Islands", "Mozambique", "Mauritania", "Montserrat",
"Mauritius", "Malawi", "Malaysia", "Namibia", "New Caledonia",
"Niger", "Norfolk Island", "Nigeria", "Nicaragua", "Niue", "Netherlands",
"Norway", "Nepal", "Nauru", "New Zealand", "Oman", "Pakistan",
"Panama", "Pitcairn Islands", "Peru", "Philippines", "Palau",
"Papua New Guinea", "Poland", "Puerto Rico", "North Korea", "Portugal",
"Paraguay", "French Polynesia", "Qatar", "Romania", "Russia",
"Rwanda", "Western Sahara", "Saudi Arabia", "Sudan", "South Sudan",
"Senegal", "Singapore", "South Georgia and South Sandwich Islands",
"Saint Helena", "Solomon Islands", "Sierra Leone", "El Salvador",
"San Marino", "Somaliland", "Somalia", "Saint Pierre and Miquelon",
"Republic of Serbia", "Sao Tome and Principe", "Suriname", "Slovakia",
"Slovenia", "Sweden", "Swaziland", "Sint Maarten", "Seychelles",
"Syria", "Turks and Caicos Islands", "Chad", "Togo", "Thailand",
"Tajikistan", "Turkmenistan", "East Timor", "Tonga", "Trinidad and Tobago",
"Tunisia", "Turkey", "Taiwan", "United Republic of Tanzania",
"Uganda", "Ukraine", "Uruguay", "United States of America", "Uzbekistan",
"Vatican", "Saint Vincent and the Grenadines", "Venezuela", "British Virgin Islands",
"United States Virgin Islands", "Vietnam", "Vanuatu", "West Bank",
"Wallis and Futuna", "Samoa", "Yemen", "South Africa", "Zambia",
"Zimbabwe", "Tuvalu", "French Guiana"), x = c(-69.98267466, 66.00473115,
17.53736149, -63.06498464, 20.04983034, 19.95324636, 1.56053368,
54.30015737, -65.17980881, 44.9299343, -170.7180186, 19.92113271,
123.58383039, 69.22673416, -61.7946956, 134.49099877, 14.12647809,
47.54599646, 29.8751201, 4.64064572, 2.32784527, -1.7545684,
90.23812793, 25.21552327, 50.54197759, -76.62835738, 17.76876588,
-62.84068712, 28.03208711, -88.71010228, -64.75454185, -64.6853892,
-53.09783199, -59.55980198, 114.72202554, 90.401895, 23.7985373,
20.46826364, -98.30775723, 8.20866006, -71.38255879, 103.81907385,
-5.56921598, 12.73964266, 23.64395637, 15.21965722, -159.7872415,
-73.08114936, 43.68238096, -23.95990969, -84.19208786, -79.01606913,
-68.9712225, -80.91213058, 33.5684401, 33.00600358, 15.31240065,
10.38577693, 42.56067681, -61.35773122, 10.02799418, -70.50569086,
2.61732102, -78.75203573, 29.8618993, 38.84615444, -3.64754874,
25.54248555, 39.6008014, 26.27467024, 165.45055475, -59.35240055,
2.53618475, -6.88096322, 153.23706115, 11.78863005, 34.34757119,
-2.86563362, 43.50778995, -2.57240158, -1.21676901, -10.94066379,
-15.39601809, -14.94972941, 10.34138898, 22.95556207, -61.68219415,
-41.34191035, -90.36482288, 144.76792243, -58.98202596, 114.11379862,
73.52052712, -86.61516846, 16.40413079, -72.68527364, 19.39559381,
117.24009764, -4.53873822, 79.61197355, 104.84946519, 72.44540239,
-8.13793167, 54.27407071, 43.74353204, -18.57397086, 35.00444995,
12.07000946, -77.31482556, -2.12687655, 36.77137251, 138.03089212,
77.18011287, 67.29149657, 37.79594437, 74.54165548, 104.90694312,
-45.6220913, -62.68754242, 127.83916926, 20.87249613, 47.58699362,
103.73772128, 35.88016327, -9.32207781, 18.00865782, -60.96969329,
9.53573593, 80.70107795, 28.22722773, 23.88720035, 6.07182681,
24.9123704, 113.50933102, -63.05971623, -8.45616045, 7.40628055,
28.45673742, 46.70473751, 73.45711081, -102.52345042, 170.33963635,
21.68211343, -3.54268794, 14.40522042, 96.48843207, 19.2388382,
103.05299651, 145.61961878, 35.53367351, -10.3477974, -62.18519807,
57.57120758, 34.2893585, 109.69761552, 17.20962769, 165.68492075,
9.38546454, 167.94920199, 8.08944243, -85.03052894, -169.8699537,
5.2814735, 15.34832968, 83.9158367, 166.93258517, 171.48495391,
56.09165967, 69.33958027, -80.11915152, -128.31704094, -74.38242889,
122.88392153, 134.40822154, 145.20744918, 19.39011841, -66.47307314,
127.19247812, -8.50105506, -58.40014084, -144.90488761, 51.18478512,
24.97293286, 96.68657347, 29.91989113, -12.2198297, 44.53687041,
29.94047226, 30.24790056, -14.47348904, 103.8172532, -36.43320448,
-9.54768684, 159.63284711, -11.79271209, -88.87164456, 12.45923029,
46.2519833, 45.70716243, -56.30319339, 20.78958121, 6.72429635,
-55.91234833, 19.47905212, 14.8044464, 16.74371219, 31.48193159,
-63.05713283, 55.47601997, 38.50787939, -71.97385725, 18.64493211,
0.96232118, 101.00288352, 71.01363312, 59.37099935, 125.84438644,
-174.80975436, -61.26565805, 9.55288287, 35.16895529, 120.95427264,
34.81310214, 32.36907536, 31.38325794, -56.01806795, -112.46167057,
63.14001799, 12.43386255, -61.20129438, -66.18184085, -64.47140241,
-64.80300497, 106.29913857, 167.68636735, 35.24782134, -177.34813306,
-172.16481475, 47.58676005, 25.08388384, 27.77475082, 29.85145031,
178.51989487, -53.2484462), y = c(12.52088881, 33.83523216, -12.29336112,
18.22396692, 41.14245128, 60.21490035, 42.54229174, 23.90527175,
-35.38135347, 40.28952206, -14.30448922, -80.50856414, -12.42994255,
-49.24895992, 17.27754256, -25.73288736, 47.58549847, 40.28827674,
-3.35939257, 50.63981435, 9.6417533, 12.26953681, 23.86730412,
42.76889988, 26.04200845, 24.29031222, 44.17449912, 17.89881045,
53.53131155, 17.20027475, 32.31368594, -16.70814536, -10.78777567,
13.18145371, 4.51968241, 27.4110619, -22.18402031, 6.56823003,
61.36206827, 46.79785296, -37.73069754, 36.56176801, 7.62842868,
5.69110296, -2.87746013, -0.83788172, -21.21926813, 3.91383156,
-11.87777573, 15.95518822, 9.9763424, 21.62290023, 12.19552443,
19.42896455, 35.2627605, 34.91666932, 49.73341073, 51.10697903,
11.74872052, 15.43947211, 55.98126391, 18.8943308, 28.15893844,
-1.42381949, 26.49593108, 15.36186881, 40.24448626, 58.67192416,
8.62278417, 64.49884844, -17.4285609, -51.7448299, 46.18700581,
62.05386227, 7.4528106, -0.58660329, 31.39150353, 54.12387156,
42.16855944, 49.46809855, 7.95345124, 10.43621595, 13.44965377,
12.04744454, 1.70554042, 39.07466973, 12.1172555, 74.71051369,
15.69404158, 13.4416655, 4.79378052, 22.39828782, -53.08725301,
14.82688225, 45.08047284, 18.93500961, 47.16277712, -2.21505018,
54.2241965, 22.88578035, -10.64829627, -7.33058251, 53.1754426,
32.57503287, 33.03970511, 64.99575263, 31.4611019, 42.79663568,
18.15695476, 49.21837488, 31.24579389, 37.59230065, 35.39236619,
48.15687954, 0.5998746, 41.46221785, 12.72004932, 0.86052252,
17.26458594, 36.3852463, 42.57078418, 29.33431677, 18.50217971,
33.92306993, 6.45278273, 27.03094247, 13.8947837, 47.13665447,
7.61266309, -29.5800467, 55.32611078, 49.76724687, 56.85085306,
22.22310807, 18.08889331, 29.83762793, 43.75276115, 47.19499323,
-19.37189599, 3.72854733, 23.94753932, 7.00352799, 41.59531059,
17.34581461, 35.92151315, 21.18566514, 42.7889115, 46.82681435,
15.82873009, -17.27381898, 20.25736926, 16.73941361, -20.2777156,
-13.2180697, 3.78987255, -22.13030791, -21.29990206, 17.41912605,
-29.05143845, 9.59411807, 12.84709633, -19.0494623, 52.10080804,
68.75014407, 28.24891362, -0.51914199, -41.81112825, 20.60515412,
29.94975221, 8.5175119, -24.36498595, -9.15280281, 11.77539737,
7.28760993, -6.46416276, 52.12759537, 18.22812711, 40.15350291,
39.59550247, -23.22823896, -14.72228068, 25.30600936, 45.85242939,
61.98052168, -1.99033199, 24.22956358, 24.12245467, 15.99035431,
7.30877585, 14.36624381, 1.35877066, -54.46487151, -12.40367621,
-8.92175696, 8.56329069, 13.73944008, 43.94186939, 9.73345795,
4.75065195, 46.91919986, 44.22150308, 0.44390851, 4.13055377,
48.70547175, 46.11555444, 62.79232016, -26.55842734, 18.05081813,
-4.66097821, 35.02547248, 21.83047424, 15.33333336, 8.52529798,
15.11816347, 38.53045125, 39.11554017, -8.8288854, -20.42814141,
10.45735757, 34.11956663, 39.06160342, 23.75400343, -6.27565815,
1.27469024, 48.99656784, -32.79951982, 45.67955203, 41.75554081,
41.90174097, 13.22471841, 7.12422395, 18.52593375, 17.95501398,
16.64601451, -16.22630588, 31.94798033, -13.88724988, -13.75327339,
15.90927655, -29.0003377, -13.45824537, -19.00420587, -7.76005828,
3.92595718), cwon = structure(list(`countrycode(World_df$Country, "country.name", "cown")` = c(NA,
700L, 540L, NA, 339L, NA, 232L, 696L, 160L, 371L, NA, NA, NA,
NA, 58L, 900L, 305L, 373L, 516L, 211L, 434L, 439L, 771L, 355L,
692L, 31L, 346L, NA, 370L, 80L, NA, 145L, 140L, 53L, 835L, 760L,
571L, 482L, 20L, 225L, 155L, 710L, 437L, 471L, 490L, 484L, NA,
100L, 581L, 402L, 94L, 40L, NA, NA, 352L, 352L, 316L, 255L, 522L,
54L, 390L, 42L, 615L, 130L, 651L, 531L, 230L, 366L, 530L, 375L,
950L, NA, 220L, NA, 987L, 481L, NA, 200L, 372L, NA, 452L, 438L,
420L, 404L, 411L, 350L, 55L, NA, 90L, NA, 110L, NA, NA, 91L,
344L, 41L, 310L, 850L, NA, 750L, NA, NA, 205L, 630L, 645L, 395L,
666L, 325L, 51L, NA, 663L, 740L, NA, 705L, 501L, 703L, 811L,
946L, 60L, 732L, 347L, 690L, 812L, 660L, 450L, 620L, 56L, 223L,
780L, 570L, 368L, 212L, 367L, NA, NA, 600L, 221L, 359L, 580L,
781L, 70L, 983L, 343L, 432L, 338L, 775L, 341L, 712L, NA, 541L,
435L, NA, 590L, 553L, 820L, 565L, NA, 436L, NA, 475L, 93L, NA,
210L, 385L, 790L, 970L, 920L, 698L, 770L, 95L, NA, 135L, 840L,
986L, 910L, 290L, NA, 731L, 235L, 150L, NA, 694L, 360L, 365L,
517L, NA, 670L, 625L, 626L, 433L, 830L, NA, NA, 940L, 451L, 92L,
331L, 520L, 520L, NA, NA, 403L, 115L, 317L, 349L, 380L, 572L,
NA, 591L, 652L, NA, 483L, 461L, 800L, 702L, 701L, 860L, 955L,
52L, 616L, 640L, 713L, 510L, 500L, 369L, 165L, 2L, 704L, 327L,
57L, 101L, NA, NA, 817L, 935L, NA, NA, 990L, 679L, 560L, 551L,
552L, 947L, NA)), row.names = c(NA, -244L), class = "data.frame")), row.names = c(NA,
-244L), class = "data.frame")
Adjacency matrix:
Network_Matrix_2005 <- structure(c(0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0,
1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,
1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0,
0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 0), .Dim = c(20L, 20L), .Dimnames = list(c("2", "20",
"31", "40", "41", "42", "51", "52", "53", "54", "55", "56", "57",
"58", "60", "70", "80", "90", "91", "92"), c("2", "20", "31",
"40", "41", "42", "51", "52", "53", "54", "55", "56", "57", "58",
"60", "70", "80", "90", "91", "92")))
In case my current dataformat is suboptimal you can find the code I have used to convert the original data below:
DiploData <- Diplomatic_Exchange_2006v1
Connected_countries <- DiploData %>% group_by(year) %>% summarise(Frequency = sum(DE))
DiploData_2005 <- DiploData %>%
filter(year == 2005)
edges <- DiploData_2005[DiploData_2005$DR_at_1 > 0 | DiploData_2005$DR_at_2 > 0,]
edges <- cbind(as.character(edges$ccode1), as.character(edges$ccode2))
edges <- rbind(edges, edges[,2:1])
codes <- unique(c(DiploData_2005$ccode1, DiploData_2005$ccode2))
Network_Matrix_2005 <- matrix(0, nrow=length(codes), ncol = length(codes), dimnames=list(codes, codes))
Network_Matrix_2005[edges] <- 1
The values of the adjacency table are based on whether country 2/1 has any diplomatic representation in country 1/2 (DR_at_1 > 0
or DR_at_2 > 0
).
I now want the nodes to be displayed on a world map.
I have until now constructed a dataframe that contains longitude, latitude and converted the country codes to be consistent with the ones used in the original data (Diplomatic_Exchange_2006v1) using the following code:
wmap <- getMap(resolution="high")
centroids <- gCentroid(wmap, byid=TRUE)
World_df <- as.data.frame(centroids)
World_df <- tibble::rownames_to_column(World_df, var = "Country")
World_df$cwon <- as.data.frame(countrycode(World_df$Country, 'country.name', 'cown'))
I expect that a solution could be similar to the one you find on the following link: https://www.r-bloggers.com/three-ways-of-visualizing-a-graph-on-a-map/
For your information, I am using the following packages:
library(ggplot2)
library(ggthemes)
library(dplyr)
library(tidyverse)
library(igraph)
library(GGally)
library(network)
library(sna)
library(countrycode)
library(assertthat)
library(purrr)
library(ggraph)
library(ggmap)
library(rworldmap)