Skip to content
R for the Rest of Us Logo

R in 3 Months (Spring 2025)

Week 11 Live Session (Spring 2025)

Transcript

Click on the transcript to go to that point in the video. Please note that transcripts are auto generated and may contain minor inaccuracies.

View code shown in video

Theme

library(tidyverse)
library(ggtext)
library(palmerpenguins)


theme_dk <- function(show_gridlines = FALSE, show_axis_text = TRUE) {
  basic_theme <-
    theme_minimal() +
    theme(
      axis.title = element_blank(),
      plot.title = element_markdown(),
      plot.title.position = "plot",
      panel.grid = element_blank(),
      axis.text = element_text(color = "grey60", size = 10)
    )

  if (show_gridlines == TRUE) {
    basic_theme <-
      basic_theme +
      theme(
        panel.grid.major = element_line(color = "grey80")
      )
  }
  
  if (show_axis_text == FALSE) {
    basic_theme <-
      basic_theme +
      theme(
        axis.text = element_blank()
      )
  }

  basic_theme
}

theme_dk_v2 <- function(plot_type) {
  basic_theme <-
    theme_minimal() +
    theme(
      axis.title = element_blank(),
      plot.title = element_markdown(),
      plot.title.position = "plot",
      panel.grid = element_blank(),
      axis.text = element_text(color = "grey60", size = 10)
    )
  
  if (plot_type == "horizontal bar chart") {
    basic_theme <-
      basic_theme +
      theme(
        axis.text = element_blank()
      )
  }
  
  if (plot_type == "map") {
    basic_theme <-
      basic_theme +
      theme(
        axis.text = element_blank()
      )
  }

  
  basic_theme
}

penguin_bar_chart <-
  penguins |>
  group_by(island) |>
  summarize(mean_bill_length = mean(bill_length_mm, na.rm = TRUE)) |>
  ggplot(
    aes(
      x = island,
      y = mean_bill_length,
      label = island,
      fill = island
    )
  ) +
  geom_col() +
  labs(title = "Biscoe penguins have the longest bills on average")

penguin_bar_chart

penguin_bar_chart +
  theme_dk(show_gridlines = TRUE)

Mapping

library(tidyverse)
library(janitor)
library(sf)

# Portland ----------------------------------------------------------------

portland_boundaries <-
  read_sf("data-raw/City_Boundaries.geojson") |>
  clean_names() |>
  filter(cityname == "Portland")

portland_boundaries |> 
  ggplot() +
  geom_sf()

traffic_signals <-
  read_sf("data-raw/Traffic_Signals.geojson") |>
  clean_names()

traffic_signals |> 
  ggplot() +
  geom_sf()

snow_and_ice_routes <-
  read_sf("data-raw/Snow_and_Ice_Routes.geojson") |>
  clean_names()

snow_and_ice_routes |> 
  ggplot() +
  geom_sf()

ggplot() +
  geom_sf(data = portland_boundaries) +
  geom_sf(data = traffic_signals,
          aes(color = software_type),
          alpha = 0.5,
          size = 1) +
  geom_sf(data = snow_and_ice_routes) +
  theme_dk(show_axis_text = FALSE)

# Tigris ------------------------------------------------------------------

library(tigris)

us_states <- states()

us_states |> 
  shift_geometry() |> 
  ggplot() +
  geom_sf()

kentucky_counties <- counties(state = "Kentucky")

kentucky_counties |> 
  ggplot() +
  geom_sf()

# Median Income -----------------------------------------------------------

library(tidycensus)
library(scales)

median_income <-
  get_acs(
    state = "Washington",
    geography = "county",
    variables = "B19013_001",
    geometry = TRUE
  )

median_income |>
  ggplot(aes(fill = estimate)) +
  geom_sf()


# International Data ------------------------------------------------------

library(rnaturalearth)

iceland <-
  ne_countries(
    country = "Iceland",
    scale = "large",
    returnclass = "sf"
  ) |>
  select(sovereignt)

ggplot(data = iceland) +
  geom_sf()


# Interactive -------------------------------------------------------------

library(ggiraph)

median_income_interactive_plot <-
  median_income |>
  ggplot(aes(
    fill = estimate,
    tooltip = estimate
  )) +
  geom_sf_interactive()

girafe(ggobj = median_income_interactive_plot)

Have any questions? Put them below and we will help you out!

You need to be signed-in to comment on this post. Login.

Mike LeVan

Mike LeVan • May 23, 2025

I am working through the Iceland example (55:08) and when I use your code I get an error. I am being asked to install "rnaturalearthhires( )". It looks like I might need some credentials to do this?

Here is my console output :

======================== The rnaturalearthhires package needs to be installed. Install the rnaturalearthhires package?

1: Yes 2: No

Selection: 1 Installing the rnaturalearthhires package. Using GitHub PAT from the git credential store. Error in value[3L] : Failed to install the rnaturalearthhires package. Please try installing the package for yourself using the following command: devtools::install_github("ropensci/rnaturalearthhires")

devtools::install_github("ropensci/rnaturalearthhires") Using GitHub PAT from the git credential store. Error: Failed to install 'unknown package' from GitHub: HTTP error 401. Bad credentials

Rate limit remaining: 49/60 Rate limit reset at: 2025-05-23 02:14:38 UTC

Gracielle Higino

Gracielle Higino Coach • May 23, 2025

Hey Mike! I've seen people trying everything to install this package and getting all sorts of errors 😂 Try using the {remotes}package, with this command:

remotes::install_github("ropensci/rnaturalearthhires")

Or even designating the source repository in your install.packages() function:

install.packages(
  "rnaturalearthhires",
  repos = "https://ropensci.r-universe.dev",
  type = "source"
)

Let us know if any of these solve the problem!

Course Content

127 Lessons