I have been having a go in R at visualising player movements for the World Cup. I wanted to use similar plots to those used to visualise international migration flows in the recent Science paper that I co-authored. In the end I came up with two plots. The first, and more complex one, is based on a non-square matrix of leagues system of players clubs by their national team.
You can zoom in and out if you click on the image.
Colours are based on the shirt of each team in the 2014 World Cup. Lines represent the connections between the country in which players play their club football (at the lines base) and their national teams (at the arrow head). Line thickness represent number of players. It’s a little cluttered, but shows nicely how many players in the English, Italian, Spanish and French leagues are involved in the world cup. It also highlights well some countries where almost all the players are at clubs abroad, for example most of the players in the African squads.
Whilst the first plot gave a lot of detail, I wanted to visualise the broader interactions, so I aggregated over leagues systems and national squads by regional confederations. This gives a square matrix:
> m squad league AFC CONCACAF CONMEBOL CAF UEFA AFC 49 2 1 3 1 CONCACAF 0 13 0 0 0 CONMEBOL 2 0 54 11 0 CAF 0 0 0 36 0 UEFA 41 99 37 86 296
This type of aggregation works really well to show how few European national players play elsewhere (only Zvjezdan Misimovic in all the European World Cup squads). It also provides a way to compare the share of non-European players plying their trade in the European leagues to those in more local leagues within their confederation.
I scraped the data from the provisional squads on Wikipedia, and then created the images with the circlize package. All the code to reproduce the plots + scraping the Wikipedia squad pages are on the my github.
Very nice figures! Hope one day in the future the width of China in the plot will be larger : )
As a comment, which version of circlize are you using? In the last few months, I updated circlize for several versions. One of the new functions that I added is `chordDiagram` which can plot Chord Diagram quite easily.
I re-implement your figure with the data provided in your github. The link is http://jokergoo.github.io/circlize/example/wc2014.html
Zuguang
Thanks Zuguang, and thanks for all the circlize development. I was using an old version, probably, 0.0.6. I just updated the github, so all should run smoothly with the latest version.
chordDiagram looks awesome! Any chance you can add an option for arrow heads, I think it helps the reader further distinguish direction (I used circos.lines with area=TRUE)?