A great ggplot twist

Programming with dplyr

Dr. Chester Ismay

Educator, Data Scientist, and R/Python Consultant

ggplot2 basics

library(ggplot2)
ggplot(
    world_bank_data, 
    aes(x = infant_mortality_rate)
) +

geom_histogram(color = "white")

Histogram of infant_mortality_rate

Programming with dplyr

Adding a title

ggplot(
    world_bank_data, 
    aes(x = infant_mortality_rate)
) + 
  geom_histogram(color = "white") +

ggtitle("A histogram of infant_mortality_rate")

ggplot2 with title

Programming with dplyr

Wrapping into a function

# Previous plot code
ggplot(world_bank_data, aes(x = infant_mortality_rate)) + 
  geom_histogram(color = "white") +
  ggtitle("A histogram of infant_mortality_rate")
# Define a function
my_histogram <- function(

df, x_var) {
ggplot(df, aes(x = x_var)) + geom_histogram(color = "white") + ggtitle(paste("A histogram of", x_var)) }
Programming with dplyr

Working on our function

# First attempt at a function
my_histogram <- function(df, x_var) {
  ggplot(df, aes(x = x_var)) +
    geom_histogram(color = "white") +
    ggtitle(paste("A histogram of", x_var))
}

# Call the function my_histogram(df = world_bank_data, x_var = infant_mortality_rate)
 Error in paste("A histogram of", x_var) : 
  object 'infant_mortality_rate' not found
Programming with dplyr

Adding in rlang

# First attempt at a function
my_histogram <- function(df, x_var) {
  ggplot(df, aes(x = x_var)) +
    geom_histogram(color = "white") +
    ggtitle(paste("A histogram of", x_var))
}
# Making needed tweaks to stop error
my_histogram <- function(df, x_var) {
  ggplot(df, aes(x = {{ x_var }})) +

geom_histogram(color = "white") + ggtitle(paste("A histogram of",
as_label(enquo(x_var))) }
Programming with dplyr

Using our function

# Defined function with rlang operators
my_histogram <- function(df, x_var) {
  ggplot(df, aes(x = {{ x_var }})) +
    geom_histogram(color = "white") +
    ggtitle(paste(
      "A histogram of", 
      as_label(enquo(x_var))
    ))
}

# Call the function with the pipe! world_bank_data %>% my_histogram(x_var = perc_rural_pop)

ggplot2 with rlang histogram

Programming with dplyr

Let's practice!

Programming with dplyr

Preparing Video For Download...