Skip to main content

Posts

Showing posts with the label ggplot

[How-To] Installation of gganimate and devtools for R in an Anaconda environment

I have recently started to play around with gganimate to create some animated graphs based on the ggplot framework. This allows you to include another dimension in your chart, e.g. a time dimension for a scatter plot and save them as gifs. You can see some cool examples on the gganimate github page which I linked before. I had some complication with installing devtools which is necessary to install gganimate through github. I think I only had these problem because I am running R/RStudio in the Anaconda environment. When trying to install devtools through install.packages("devtools") I got the below error: x86_64-apple-darwin13.4.0-ar: no such file or directory make: *** [libmygit.a] error 1 error: compilation failed for package ‘git2r’ devtools requires git2r to be installed as a dependency but somehow this failed for my R environment. The solution to my problem was to install git2r beforehand through Anaconda directly by running the following line in the ...

[How-To] How to plot a chart on top of a background image in ggplot2

This post is an instructional one on how to plot a chart on top of a background image in ggplot2 and R. The motivation for plotting on a background may just be a design choice or it may serve the purpose of supporting the message of the chart. I will show how i create my previous post's chart showing the location of successful free kicks on a football pitch. Below code creates a 10x10 matrix with normally distributed doubles, which we will use as dummy data so you can easily replicate the results. N We can convert this into a data frame and plot the initial data. library(ggplot2) df Next we need a background image which you can import with the jpeg package. In my case this is a picture of half a football pitch. library(jpeg) img We can now combine these two parts and annotate the background image to the ggplot plot. We are using ggplot's annotation_custom and the rasterGrob function of the grid package. Essentially we are saying not to scale the imported...

Don't give one away there! Over 24,000 free kicks analyzed

Everybody knows the feeling: your team gives away a last-minute free kick at the edge of the box. A goal could cost you points or even worse: extra time. How likely is it really to score a direct free kick? I have looked through over 24,000 free kicks across the top European leagues and competitions to show you the spots a free kick is most promising and what the overall conversion rate is, i.e. how often do you actually score from such an opportunity. To make this data more insightful I have split the pitch (or better half a pitch) into 100 equal sized boxes. If a free kick is taken inside on of these boxes I group the outcome together. Below you see a heat map plotted on top of a half pitch. The boxes with the deepest red colour have the highest conversion rates. About half of the pitch remains green. For the 18 yard box the reason is obvious: there are no direct free kicks possible inside the box. On other parts of the pitch players don't usually opt for the direct free ki...