My trip to Mexico in emojis
The code that never really worked
This post is the result of hours and hours of me trying to write some code but never getting it quite right. I think that one of the worst things that you can do to yourself is to be scared to admit that you are struggling because you will end up never trying anything new. That is why I am publishing what I have got so far despite not being very happy with it. (I also think maybe someone reading this will be able to tell me what I am doing wrong). UPDATE: I finally have my emoji map!
I also want to celebrate the things that I did work. I did figure out how to include gifs and emojis in the text! I picked a gif that illustrates what this jetlagged person probably should have done a long time ago đ.
(OK I picked it because I love đ¶)
Background
The other day someone asked for some help to make a map and I suggested using R and ggmap
. I wanted to share some code and decided to turn it into a blog post.
I just got back from a two week holiday in Mexico. Everywhere we went was so beautiful and everyone was so nice to us (shout out to the people who helped us get more fuel when we were running dangerously low). To remember my lovely holiday I will plot all the places I went to.
I start by getting the background map using get_stamenmap. There are a few different options for the background and I prefer the watercolour option because it makes the map look like a board game. # Getting a map
Getting the data
The next step is to create a list of all the places I went to. I use geocode
from ggmap
to get the coordinates.
It is always worth looking at your data and as you can see from the min and max of the longitudes and latitudes, all places are close to each other. The first time I ran the geocode command it picked Valladolid in Spain instead of Mexico so it didnât actually appear on the map when I plotted it. I fixed this by adding âMexicoâ to the search string. Ironically I accidentally booked a hotel in Valladolid in Spain instead of Valladolid in Mexico for my holiday and only realised the day before I was going.
broom::tidy(places_coor)
## column n mean sd median trimmed mad min
## 1 place* 9 NaN NA NA NaN NA Inf
## 2 lon 9 -88.1214 1.2183078 -87.73888 -88.1214 1.1755535 -90.39807
## 3 lat 9 20.6622 0.3025031 20.66667 20.6622 0.2876837 20.21237
## max range skew kurtosis se
## 1 -Inf -Inf NA NA NA
## 2 -86.84656 3.55151 -0.6571399 -1.126791 0.4061026
## 3 21.17429 0.96192 0.2151837 -1.305442 0.1008344
To make the map more fun I decided to use emoji instead of boring old circles. I picked emojis that represent what we did in all the different places (and yes my friends saw a shark!)
label1<-data.frame(label=c(emoji("airplane"),emoji("taco"), emoji("turtle"), emoji("bike"), emoji("sandal"), emoji("corn"),
emoji("bird"), emoji("avocado"), emoji("shark")))
places_coor <- dplyr::bind_cols(label1, places_coor)
Creating the map
This is where things got annoying. It took me a while to get the emojis to actually appear on the map. After a bit of googling I learnt that since I use Rstudio and I have a mac then I need to download âquartzâ and include quarts to open a different window. When running this code not in an Rmarkdown file it works just fine (I mean it is still pretty ugly) but as soon as I move it over to Rmarkdown the emojis no longer appear. The png file that I save has the emojis but I canât figure out how to include it. UPDATE: I realised that I had to save the map in the public folder (in my case â~/Documents/GitHub/bdown/public/2018/03/mexicoâ)
load.emojifont()
quartz()
map1<-ggmap(yucatan_wc, base_layer=ggplot(data=places_coor, aes(lon, lat, label=label))) +
geom_text(size = 10, x=places_coor$lon, y=places_coor$lat,
vjust = 0.25, family='EmojiOne') + labs(x=NULL, y=NULL) +
ggtitle("My trip to Mexico in emojis") +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title.y=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank(),
plot.title = element_text(hjust = 0.5),
plot.margin=unit(c(0,0,0,0),"mm"))
ggsave("~/Documents/GitHub/bdown/public/2018/03/mexico/mexico_map.png")
## Saving 7 x 7 in image
My attempt to include the .png file. I feel like this should be fairly straighforward but despite trying trying a few different ways (I deleted some code) it just doesnât work.
img1_path <- "mexico_map.png"
knitr::include_graphics(img1_path)
Happy gif to go with all of my updates
# Packages I used
library(ggmap)
library(emojifont)
library(tidyverse)
library(png)
library(emo)