Showing Refugees Some Love

The terrorist attacks in Paris on November 13 brought renewed attention to the movement of refugees from Syria to the West. Unfortunately, much of this attention has been negative, despite the fact that refugees are fleeing the very brutality that was unleashed on Paris. The rhetoric from the Republican presidential candidates in the U.S. has been particularly vile. However, many people around the world continue to welcome refugees and show compassion. That’s why I made this visualization:

This map shows positive media coverage of refugees over the past 24 hours (updated hourly). Each animated marker represents one positive media mention about refugees in a particular location.

The data comes from GDELT (The Global Database of Events, Language, and Tone). GDELT’s Global Knowledge Graph monitors media in 65 languages around the world and uses algorithms to measure the emotions and tone of the texts. The map shows results on the theme of “refugees” with a tone of greater than two. Tone is the most basic GDELT parameter, and measures how positive or negative a media article is. So, for example, this article about how churches in Kansas and Nebraska are ready to help refugees is included in the dataset.

How I made the map

This map is a nice demonstration of some useful CartoDB features, such as sync tables, animation, and custom map projections.

I used the GDELT Global Knowledge Graph API to pull the data and load it into CartoDB. The exact API call is:,name,tone&OUTPUTTYPE=2

This returns a geojson file with all the results over the last 24 hours tagged with the “refugees” theme. Using CartoDB’s sync tables you can set the data table to update automatically. Mine updates every hour.

I filtered the results to only include articles with a tone score of greater than two (positive coverage), and then used CartoDB’s Torque tool to create the animation with a custom marker (the heart).

The map projection is a modified Bonne, with the standard parallel set to 90 degrees North to make it appear more heart-shaped. Here is a useful tutorial for using different projections in CartoDB.

Inspiration came from this blog post, and this tutorial was very helpful in figuring out how to use the GDELT API. You can access the data from my CartoDB page here and easily create a map of your own.

Illustrating the Arc of European Colonialism Using a Dot Plot

A while back I was thinking about European colonialism and the enormous impact it’s had on world history. Wouldn’t it be nice to have a simple visualization to illustrate colonization and decolonization around the world? It occurred to me that a dumbbell dot plot would work well for this task. Here’s what I came up with:


The chart shows the dates of colonization and independence of 100 current nations. The countries are organized into broad regions (Asia, Africa, and the Americas), and sorted by date of independence. Color represents the principal colonial power, generally the occupier for the greatest amount of time.

There are many interesting patterns visible in the chart. For example, you can clearly see Spain’s rapid conquest of Central and South America, and then even more rapid loss of its colonies in the 1820s. The scramble for Africa in the late 19th century stands out well, as does the rapid decolonization phase of the late 1950s through early 1970s.

About the Data

To reduce complexity to a manageable level, I set some limitations on what countries to include. First, the chart shows only those countries victim to Western European colonialism. I don’t include Ottoman, Japanese, Russian, American, or other colonial empires. I also don’t include territories that are still governed by former colonial powers (e.g. Gibraltar). This gets controversial and complicated. Countries that were uninhabited upon discovery by colonial powers are also not included. The same with countries that later gained independence from a post-colonial state (e.g. South Sudan).

The dates of independence come from the CIA World Factbook (here). Dates of colonization were derived by my own research, mostly from Wikipedia country pages. I quickly found that establishing a date of colonization is a somewhat subjective decision. Do you choose the date of first European contact? Formal incorporation of the territory into the colonial empire? For the most part, I chose the date of the first permanent European settlement. Notes on the rationale for the date chosen are include in the data spreadsheet (below). In looking at the chart, it’s important to remember that in many cases colonial subjugation was a long process, moving from initial contact, to trade, conquest, settlement, and incorporation.

Constructing the Plot

I wanted to make this plot using ggplot2 in R, but was not sure about best approach. So I reached out on Twitter to dataviz guru and dot plot enthusiast @evergreendata

The response from the #rstats and dataviz community was extremely constructive and useful. Users  @hrbrmstr@jalapic@ramnath_vaidya, and @plotlygraphs all provided great examples (here, here, here, and here, respectively). In the end, I chose to adapt the approach taken by @jalapic.

A quick note on color: I choose colors from the flags of the principal colonial powers to represent them on the plot (except for the Netherlands for which I picked orange). The idea is to make it easier for the viewer to match the color with the country without having to always go back to the legend. I’d be interested in any reactions to this approach. In general, I’d be thrilled with any feedback on how to make this plot better.

Data and code for the plot:

Country Colonized Independence Region Principal Colonial Power Remarks on independence Remarks on date of colonization
Algeria 1830 1962 Africa France 5 July 1962 (from France) Conquest of Algiers
Angola 1575 1975 Africa Portugal 11 November 1975 (from Portugal)
Antigua and Barbuda 1632 1981 Americas UK 1 November 1981 (from the UK)
Argentina 1542 1816 Americas Spain 9 July 1816 (from Spain) Viceroyalty of Peru
Australia 1788 1901 Asia UK 1 January 1901 (from the federation of UK colonies) Australia Day
Bahrain 1892 1971 Asia UK 15 August 1971 (from the UK)
Barbados 1627 1966 Americas UK 30 November 1966 (from the UK)
Belize 1638 1981 Americas UK 21 September 1981 (from the UK)
Benin 1892 1960 Africa France 1 August 1960 (from France)
Bolivia 1533 1825 Americas Spain 6 August 1825 (from Spain) Conquest of Inca Empire
Botswana 1885 1966 Africa UK 30 September 1966 (from the UK)
Brazil 1534 1822 Americas Portugal 7 September 1822 (from Portugal) Captaincies of Brazil
Brunei 1888 1984 Asia UK 1 January 1984 (from the UK) Treaty of Protection
Burkina Faso 1896 1960 Africa France 5 August 1960 (from France) Become French Protectorate
Burma 1885 1948 Asia UK 4 January 1948 (from the UK) Annexed after Third Anglo-British War
Burundi 1891 1962 Africa Belgium 1 July 1962 (from UN trusteeship under Belgian administration) Originally part of German East Africa
Cambodia 1867 1953 Asia France 9 November 1953 (from France) Originally claimed by Germany
Cameroon 1884 1960 Africa France 1 January 1960 (from French-administered UN trusteeship)
Canada 1534 1867 Americas UK 1 July 1867 (union of British North American colonies); 11 December 1931 (recognized by UK per Statute of Westminster) New France
CAR 1894 1960 Africa France 13 August 1960 (from France) Ubangi-Shari
Chad 1900 1960 Africa France 11 August 1960 (from France) Territoire Militaire des Pays et Protectorats du Tchad�
Chile 1541 1810 Americas Spain 18 September 1810 (from Spain) Santiago founded
Colombia 1510 1810 Americas Spain 20 July 1810 (from Spain) Founding of Santa Mar�a la Antigua del Dari_n
Comoros 1841 1975 Africa France 6 July 1975 (from France)
DRC 1876 1960 Africa Belgium 30 June 1960 (from Belgium) Stanley's first exploration of the Congo
Congo, Republic of the 1880 1960 Africa France 15 August 1960 (from France) Treaty with de Brazza
Costa Rica 1522 1821 Americas Spain 15 September 1821 (from Spain) Arrival of Gil Gonzolez Davila
Cote d'Ivoire 1844 1960 Africa France 7 August 1960 (from France) Establishment of French Protectorate
Cuba 1511 1902 Americas Spain 20 May 1902 (from Spain 10 December 1898; administered by the US from 1898 to 1902); not acknowledged by the Cuban Government as a day of independence First Spanish Settlement
Djibouti 1894 1977 Africa France 27 June 1977 (from France) French Somalialand
Ecuador 1534 1822 Americas Spain 24 May 1822 (from Spain) Conquest of Sebasti�n de Benalc�zar
Egypt 1882 1956 Africa UK 28 February 1922 (from UK protectorate status; the revolution that began on 23 July 1952 led to a republic being declared on 18 June 1953 and all British troops withdrawn on 18 June 1956); note – it was ca. 3200 B.C. that the Two Lands of Upper (southern) and Lower (northern) Egypt were first united politically British occupation
El Salvador 1524 1821 Americas Spain 15 September 1821 (from Spain) Conquest by Pedro de Alvarado
Equatorial Guinea 1844 1968 Africa Spain 12 October 1968 (from Spain) Territorios Espa_oles del Golfo de Guinea
Fiji 1874 1970 Asia UK 10 October 1970 (from the UK) British subjugation
Gabon 1885 1960 Africa France 17 August 1960 (from France) Occupied by France
Gambia, The 1815 1965 Africa UK 18 February 1965 (from the UK) British presence established
Ghana 1612 1957 Africa UK 6 March 1957 (from the UK) Gold coast forts
Grenada 1649 1974 Americas UK 7 February 1974 (from the UK) French found permanent settlement
Guatemala 1524 1821 Americas Spain 15 September 1821 (from Spain) Conquest by Pedro de Alvarado
Guinea-Bissau 1482 1974 Africa Portugal 24 September 1973 (declared); 10 September 1974 (from Portugal) Portuguese gold coast colony
Guinea 1850 1958 Africa France 2 October 1958 (from France) French military penetration in the mid-19th century
Guyana 1616 1966 Americas UK 26 May 1966 (from the UK) Essequebo colony (Durch)
Haiti 1492 1804 Americas France 1 January 1804 (from France) Columbus found La Navidad
Honduras 1524 1821 Americas Spain 15 September 1821 (from Spain) Conquest of Gil Gonz�lez de �vila
Hong Kong 1842 1997 Asia UK none (special administrative region of China) Treaty of Nanking
India 1756 1947 Asia UK 15 August 1947 (from the UK) Company rule by East India Company begins
Indonesia 1602 1949 Asia Netherlands 17 August 1945 (declared) Dutch East India Company Established in 1602
Iraq 1920 1932 Asia UK 3 October 1932 (from League of Nations mandate under British administration); note – on 28 June 2004 the Coalition Provisional Authority transferred sovereignty to the Iraqi Interim Government League of Nations mandate under British administration
Jamaica 1509 1962 Americas UK 6 August 1962 (from the UK) First Spanish settlement
Jordan 1922 1946 Asia UK 25 May 1946 (from League of Nations mandate under British administration) League of Nations mandate under British administration
Kenya 1888 1963 Africa UK 12 December 1963 (from the UK) Imperial British East Africa Company
Kuwait 1899 1961 Asia UK 19 June 1961 (from the UK) British protectorate
Laos 1893 1949 Asia France 19 July 1949 (from France) French protectorate of Laos
Lebanon 1920 1943 Asia France 22 November 1943 (from League of Nations mandate under French administration) League of Nations mandate under French administration
Lesotho 1838 1966 Africa UK 4 October 1966 (from the UK) arrival of Trekboers
Libya 1912 1951 Africa UK 24 December 1951 (from UN trusteeship) Italian North Africa
Macau 1557 1999 Asia Portugal none (special administrative region of China) Portugal settlement
Madagascar 1882 1960 Africa France 26 June 1960 (from France) Malagasy Protectorate
Malawi 1876 1964 Africa UK 6 July 1964 (from the UK) Trading settlement at Blantyre
Malaysia 1511 1957 Asia UK 31 August 1957 (from the UK) Portuguese Malacca
Mali 1880 1960 Africa France 22 September 1960 (from France) French Sudan
Mauritania 1890 1960 Africa France 28 November 1960 (from France) Approximate
Mexico 1519 1821 Americas Spain 16 September 1810 (declared); 27 September 1821 (recognized by Spain) Spanish conquest
Morocco 1884 1956 Africa France 2 March 1956 (from France) First Spanish protectorate
Mozambique 1501 1975 Africa Portugal 25 June 1975 (from Portugal) Captaincy of Sofala
New Zealand 1788 1907 Asia UK 26 September 1907 (from the UK) Colony of New South Wales
Nicaragua 1524 1821 Americas Spain 15 September 1821 (from Spain) First Spanish settlements
Nigeria 1800 1960 Africa UK 1 October 1960 (from the UK)
Niger 1899 1960 Africa France 3 August 1960 (from France) Vouley Chanoine Mission
Oman 1507 1650 Asia Portugal 1650 (expulsion of the Portuguese) Occupation of Muscat
Pakistan 1765 1947 Asia UK 14 August 1947 (from British India) Start of company rule in Indian subcontinent
Papua New Guinea 1884 1975 Asia UK 16 September 1975 (from the Australian-administered UN trusteeship) German New Guinea
Paraguay 1537 1811 Americas Spain 14 May 1811 (from Spain) Founding of Asuncion
Peru 1532 1821 Americas Spain 28 July 1821 (from Spain) Battle of Cajamarca
Philippines 1565 1946 Asia Spain 4 July 1946 (from the US) Miguel Lopez de Legazpi arrives
Qatar 1916 1971 Asia UK 3 September 1971 (from the UK) British protectorate
Rwanda 1884 1962 Africa Belgium 1 July 1962 (from Belgium-administered UN trusteeship) Assigned to German East Africa
Senegal 1677 1960 Africa France 4 April 1960 (from France); note – complete independence achieved upon dissolution of federation with Mali on 20 August 1960 French control
Sierra Leone 1787 1961 Africa UK 27 April 1961 (from the UK) "Province of Freedom"
Solomon Islands 1893 1978 Asia UK 7 July 1978 (from the UK) British protectorate
Somalia 1920 1960 Africa UK 1 July 1960 (from a merger of British Somaliland that became independent from the UK on 26 June 1960 and Italian Somaliland that became independent from the Italian-administered UN trusteeship on 1 July 1960 to form the Somali Republic) Dervish state falls
South Africa 1652 1931 Africa UK 31 May 1910 (Union of South Africa formed from four British colonies: Cape Colony, Natal, Transvaal, and Orange Free State); 31 May 1961 (republic declared); 27 April 1994 (majority rule) Cape Town founded
Sri Lanka 1517 1948 Asia UK 4 February 1948 (from the UK) Portuguese establish Colombo
Sudan 1882 1956 Africa UK 1 January 1956 (from Egypt and the UK) British Occupation
Suriname 1667 1975 Americas Netherlands 25 November 1975 (from the Netherlands) Capture by Dutch
Swaziland 1890 1968 Africa UK 6 September 1968 (from the UK) British, Dutch, Swazi trimviral administration
Syria 1923 1946 Asia France 17 April 1946 (from League of Nations mandate under French administration) League of Nations mandate under French administration
Tanzania 1885 1964 Africa UK 26 April 1964; Tanganyika became independent on 9 December 1961 (from UK-administered UN trusteeship); Zanzibar became independent on 10 December 1963 (from UK); Tanganyika united with Zanzibar on 26 April 1964 to form the United Republic of Tanganyika and Zanzibar; renamed United Republic of Tanzania on 29 October 1964 German East Africa (Zanibar controled by Portuguese in 16th century
Togo 1884 1960 Africa France 27 April 1960 (from French-administered UN trusteeship) German Protectorate
Trinidad and Tobago 1530 1962 Americas UK 31 August 1962 (from the UK) Spanish settlement
Tunisia 1881 1956 Africa France 20 March 1956 (from France) French Invasion
Uganda 1894 1962 Africa UK 9 October 1962 (from the UK) Uganda Protectorate
United Arab Emirates 1820 1971 Asia UK 2 December 1971 (from the UK) Trucial States
United States 1607 1783 Americas UK 4 July 1776 (declared); 3 September 1783 (recognized by Great Britain) Jamestown
Venezuela 1522 1811 Americas Spain 5 July 1811 (from Spain) Settlement of Cumana
Vietnam 1862 1945 Asia France 2 September 1945 (from France) Cochinchina
Yemen 1839 1967 Asia UK 22 May 1990 (Republic of Yemen was established with the merger of the Yemen Arab Republic [Yemen (Sanaa) or North Yemen] and the Marxist-dominated People's Democratic Republic of Yemen [Yemen (Aden) or South Yemen]); note – previously North Yemen became independent in November 1918 (from the Ottoman Empire) and became a republic with the overthrow of the theocratic Imamate in 1962; South Yemen became independent on 30 November 1967 (from the UK) British occupy Aden
Zambia 1798 1964 Africa UK 24 October 1964 (from the UK) Claimed by Portugal
Zimbabwe 1888 1980 Africa UK 18 April 1980 (from the UK) British South Africa Company

view raw
hosted with ❤ by GitHub

# Dumbell Dot Chart of European Colonialism
colonial <- read.csv("colonial.csv", stringsAsFactors=FALSE,
col.names = c("country", "colony", "independence", "region", "pcp",
"remarks_ind", "remarks_col"))
df1 <- colonial %>% gather(status,year,2:3)
ind <- df1 %>% filter(status=="independence") %>% arrange(desc(year)) %>% .$country
df1$country <- factor(df1$country, levels=rev(ind))
colonial$country <- factor(colonial$country, levels=rev(ind))
#data frames used for labeling only one of the plot facets
f_labels1 <- data.frame(region = c("Africa", "Americas", "Asia"), label = c("Colonization", "", ""))
f_labels2 <- data.frame(region = c("Africa", "Americas", "Asia"), label = c("Independence", "", ""))
plot <- ggplot() +
geom_segment(data=colonial, aes(x=colony, xend=independence, y=country, yend=country), color="gray77",lwd=1)+
geom_point(data=df1, aes(year, country, group=pcp,color=pcp), size=3) +
scale_color_manual(values=c("#000000", "#318CE7", "#FF6600", "#006600", "#F1BF00", "#CF142B"))+
ggtitle("Five Centuries of Colonialism") +
xlab("") + ylab("") +
facet_grid(region ~ ., scales = "free_y", space = "free_y" ) +
labs(color = "Principal\nColonial\nPower") +
scale_y_discrete(expand = c(0,2))+
geom_text(x = 1880, y = Inf, aes(label = label), data = f_labels1, vjust = 1, size = 3)+
geom_text(x = 1975, y = Inf, aes(label = label), data = f_labels2, vjust = 1, size = 3)+
theme_bw() +
panel.border = element_blank(),
plot.title = element_text(vjust=1),
panel.grid.major.y = element_line(linetype = "dotted", color = "gray20"),
axis.text.y = element_text(size=rel(.8)),
axis.ticks.y = element_line(color = "gray20", size = rel(.8)),
strip.background = element_rect(fill = NA, size = 0, color = "white", linetype = "blank"),
strip.text = element_text(size = rel(1.33)),
legend.key = element_rect(color = "white", size = 0)

view raw
hosted with ❤ by GitHub