So it turns out I’m pretty bad at vacation. I had this idea for a blog post and one thing lead to another and here we are…
You probably know by now I hate installing things on my host. At my previous job we did a lot of work with using Python and R for data science. I still love plotting data with ggplot and my favorite R package, wes anderson color palette.
Here’s a fast intro into how to do this with an R Docker image.
Now everyone loves their share of different packages, without a doubt I bet most of them are written by Hadley Wickham ;). Can you imagine if the percentage of packages contributed by Hadley to CRAN was mirrored by someone to NPM or pip? It would be crazy.
We are going to start with an R base and build our ideal (aka you can make yours different, chill…) R data science container, with the following Dockerfile:
```
FROM r-base
RUN echo 'install.packages(c("ggplot2", "plyr", "reshape2", "RColorBrewer", "scales","grid", "wesanderson"), repos="http://cran.us.r-project.org", dependencies=TRUE)' > /tmp/packages.R \ && Rscript /tmp/packages.R
ENV HOME /home/user RUN useradd --create-home --home-dir $HOME user \ && chown -R user:user $HOME
WORKDIR $HOME USER user
CMD ["R"]
```
Build the image:
``` $ docker build --rm --force-rm -t jess/r-custom .
```
Run and use the image:
```
$ docker run -it --name analytics \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e DISPLAY=unix$DISPLAY \ jess/r-custom
$ docker run -v $(pwd)/data:/home/user/data \ -it --name analytics \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e DISPLAY=unix$DISPLAY \ jess/r-custom
```
Now plot something:
``` library(wesanderson)
library(ggplot2) ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) + geom_point(size = 3) + scale_color_manual(values = wes_palette("Royal2")) + theme_gray()
```
See that was super easy, now I can go back to being on vacation and reading the latest Vogue.
Other resources for such things: