Skip to content
R for the Rest of Us Logo

Reorder Plots to Highlight Findings

This lesson is locked

Get access to all lessons in this course.

If the video is not playing correctly, you can watch it in a new window

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
# Load Packages -----------------------------------------------------------

library(tidyverse)
library(fs)

# Create Directory --------------------------------------------------------

dir_create("data")

# Download Data -----------------------------------------------------------

# download.file("https://github.com/rfortherestofus/going-deeper-v2/raw/main/data/third_grade_math_proficiency.rds",
#               mode = "wb",
#               destfile = "data/third_grade_math_proficiency.rds")

# Import Data -------------------------------------------------------------

third_grade_math_proficiency <- 
  read_rds("data/third_grade_math_proficiency.rds") |> 
  select(academic_year, school, school_id, district, proficiency_level, number_of_students) |> 
  mutate(is_proficient = case_when(
    proficiency_level >= 3 ~ TRUE,
    .default = FALSE
  )) |> 
  group_by(academic_year, school, district, school_id, is_proficient) |> 
  summarize(number_of_students = sum(number_of_students, na.rm = TRUE)) |> 
  ungroup() |> 
  group_by(academic_year, school, district, school_id) |> 
  mutate(percent_proficient = number_of_students / sum(number_of_students, na.rm = TRUE)) |> 
  ungroup() |> 
  filter(is_proficient == TRUE) |> 
  select(academic_year, school, district, percent_proficient) |> 
  rename(year = academic_year) |> 
  mutate(percent_proficient = case_when(
    is.nan(percent_proficient) ~ NA,
    .default = percent_proficient
  ))

# Plot --------------------------------------------------------------------

third_grade_math_proficiency |> 
  filter(year == "2021-2022") |> 
  filter(district == "Portland SD 1J") |> 
  ggplot(aes(x = percent_proficient, 
             y = school)) +
  geom_col()

third_grade_math_proficiency |> 
  filter(year == "2021-2022") |> 
  filter(district == "Portland SD 1J") |> 
  ggplot(aes(x = percent_proficient, 
             y = reorder(school, percent_proficient))) +
  geom_col()

third_grade_math_proficiency |> 
  filter(year == "2021-2022") |> 
  filter(district == "Portland SD 1J") |> 
  mutate(school = fct_reorder(school, percent_proficient)) |> 
  ggplot(aes(x = percent_proficient, 
             y = school)) +
  geom_col()

Your Turn

  1. Make a bar chart that shows race/ethnicity in Beaverton SD 48J. As before, filter your data to only include 2022-2023 data and only include Beaverton SD 48J. Then, do the following:

  2. Using the reorder() function, make a bar chart that shows the percent of race/ethnicity groups in descending order

  3. Make the same bar chart using mutate() and fct_reorder() to reorder the race/ethnicity groups

Learn More

R for the Rest of Us consultant Albert Rapp has written a blog post on reordering items in plots.

If you want to delve deeper into factors, check out:

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

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