Global Migration Maps

 Migrations of people have existed for millennia and occur at a range of scales and time-periods (from small-scale journeys to work through to intercontinental resettlement). As a geographer I have long been interested in these and thought it was about time I mapped them! Using data from the Global Migrant Origin Database (thanks Adam for the tip) and R, my favourite stats software, I have produced the maps you see here (click on them for higher resolution). Each line shows the origins and destinations of at least 4000 people in a given year (2000 in this case). The more red the line the more people it represents. I have used great circle distance to plot them onto the Earth.  The map below shows the same magnitude of flows but just for Europe. The Earth has been flattened for this one so the flows are represented by arbitrary arcs.


These visualisations aren’t perfect. Firstly they are based on a dataset where many of the movements are best guesses rather cipro antibiotic purchase than measured data. You can read more about this here. It would also be great to have actual flows rather than inferred flows based on the number of migrants in each country. If I made these maps again I might draw lines between capital cities or population centres to avoid the impression that the majority of migrations to/ from Russia start/end in Siberia for example. There are of course endless ways of partitioning the data/ selecting the colours. Despite this I am really pleased with effect and the maps go some way to showing the dynamism in many 21st Century populations.

Technical Details

I think Paul Butler’s Facebook Map threw down the gauntlet to the R community in terms of the quality of visualisations that can be produced with the software so I was keen to see what I could do. To produce the maps I calculated the great circle distances using the geosphere package, I calculated my own arcs for the second map and used the maps package for my World outline. The visualisations (including projections) were done using ggplot2. Over the next few months I plan to stick together a more complete tutorial (PhD write-up permitting!).**UPDATE** the flowingdata blog has beaten me to it see here.


  1. Duncan

    Those are spectacular and I’m impressed with the quality of what you’re producing in R.

    In terms of the intelligibility of the maps, there are a lot of the same issues as we’re having with visualising transport flows i.e. so many origins and destinations that the macro patterns can be obscured. A few visualisations use the technique of the flows being three-dimensional arcs that sit above the earth’s surface, with heights relating to distance/magnitude. Might be worth a try. Also could a Buckminster Fuller projection do the globe in one map? Anyway, really nice work!

    1. James Author

      Thanks Duncan! I did try the Buckminster Fuller projection but it looked pretty messy. Arcs above the earth would look cool. I think a good quality attempt at this in R may be a bit of a challenge though…

  2. Yes, please put up the tutorial. I have some ideas but presently lack the technical skills although I am a programmer (a bit out of date however).

    Beautiful work.

  3. H. ONO


    I”ve been very impressed with this GeoVis flow maps.

    One I have developed web gis for Japanese Population migration flow using Mapserver/MapScript with PHP scripting( (Sorry in Japanese only)).

    Unfortunately, int this site I used straight lines for flow lines. I think your second map”s presentation is so impressive.

    I couldn’t find any R package including functions drawing arbitary arcs used in your second map. Have you used Bezier for this?

    If possible, could you show me your sample code?

    Best regards.

  4. B Law

    A question.

    How did you “calculated my own arcs for the second map”? If it’s not too much trouble, could you share the code? I have a similar problem where my map only covers the eastern U.S. and the lines look basically straight.

    Thank and great work!

  5. Hi there,

    I happened upon your site while looking for regional science / spatial analysis organizations, and I just wanted to let you know I find your maps absolutely fascinating. I work at a University in Northern Chile, so I am going to search out whatever you might have produced that is related to this region and share it, if you don’t mind. Please let me know if you have any suggestions for where to start or if anything that relates to this area comes rushing back to your mind.

    Thanks for the great work you do, I look forward to seeing more in the future!

  6. Johanna

    James, thanks for a great post! I am trying to create a similar map of flows from Sweden to the rest of the world. However, I am a beginner at R and when I try to load the geosphere package with this code library(geosphere)
    I simply get this message:
    Loading required package: sp
    Error: package ‘sp’ could not be loaded
    In addition: Warning message:
    In library(pkg, character.only = TRUE, logical.return = TRUE, lib.loc = lib.loc) :
    there is no package called ‘sp’

    What is wrong? Would really appreciate some help!

Comments are closed.