Week 11 Live Session (Fall 2026)
This lesson is called Week 11 Live Session (Fall 2026), part of the R in 3 Months (Fall 2026) course. This lesson is called Week 11 Live Session (Fall 2026), part of the R in 3 Months (Fall 2026) course.
View code shown in video
Theme code
library(tidyverse)
library(palmerpenguins)
# Theme -------------------------------------------------------------------
theme_dk <- function(hide_gridlines = TRUE, hide_legend = TRUE) {
my_theme <-
theme_minimal() +
theme(
axis.title = element_blank(),
axis.text = element_text(
color = "grey60",
size = 18
)
)
if (hide_gridlines == TRUE) {
my_theme <-
my_theme +
theme(panel.grid = element_blank())
}
if (hide_legend == TRUE) {
my_theme <-
my_theme +
theme(legend.position = "none")
}
my_theme
}
library(omni)
# Colors -----------------------------------------------------------------
scale_color_rru <- function(number_of_colors) {
if (number_of_colors == 2) {
my_brand_colors <-
c(
"#6cabdd",
"#ff7400"
)
}
if (number_of_colors == 3) {
my_brand_colors <-
c(
"#6cabdd",
"#ff7400",
"darkgreen"
)
}
scale_color_manual(
values = my_brand_colors
)
}
theme_set(theme_dk())
penguins |>
filter(island != "Dream") |>
ggplot(
aes(
x = bill_length_mm,
y = bill_depth_mm,
color = island
)
) +
geom_point() +
scale_color_rru(number_of_colors = 2) +
theme_dk(hide_gridlines = FALSE)
# Plots -------------------------------------------------------------------
ggplot(
data = penguins,
aes(
x = bill_length_mm,
y = bill_depth_mm
)
) +
geom_point() +
theme_dk(hide_gridlines = FALSE)
ggplot(
data = penguins,
aes(
x = bill_length_mm,
y = bill_depth_mm,
color = island
)
) +
geom_point() +
scale_color_manual(
values = c(
omni_colors("orange-red-600"),
omni_colors("teal-200"),
omni_colors("golden-yellow-400")
)
) +
theme_dk(hide_legend = FALSE) +
theme(axis.title = element_text())
source("/users/davidkeyes/Desktop/functions.R")
Mapping code
library(tidyverse)
library(janitor)
library(sf)
# Portland ----------------------------------------------------------------
portland_boundaries <-
read_sf("data-raw/City_Boundaries.geojson") |>
clean_names() |>
filter(cityname == "Portland")
portland_boundaries
portland_boundaries |>
ggplot() +
geom_sf() +
theme_void()
traffic_signals <-
read_sf("data-raw/Traffic_Signals.geojson") |>
clean_names()
traffic_signals
traffic_signals |>
ggplot() +
geom_sf()
snow_and_ice_routes <-
read_sf("data-raw/Snow_and_Ice_Routes.geojson") |>
clean_names()
snow_and_ice_routes |>
select(priority)
snow_and_ice_routes |>
ggplot() +
geom_sf(aes(color = priority))
ggplot() +
geom_sf(
data = portland_boundaries,
fill = "gray80",
alpha = 0.5
) +
geom_sf(
data = snow_and_ice_routes,
alpha = 0.5
) +
geom_sf(
data = traffic_signals,
aes(color = software_type),
alpha = 0.5,
size = 1
) +
theme_dk(hide_gridlines = TRUE, hide_legend = FALSE) +
theme(axis.text = element_blank())
# Tigris ------------------------------------------------------------------
library(tigris)
us_states <- states()
us_states
us_states |>
shift_geometry() |>
ggplot() +
geom_sf()
kentucky_counties <- counties(state = "Kentucky")
kentucky_counties
kentucky_counties |>
ggplot() +
geom_sf()
# Median Income -----------------------------------------------------------
library(tidycensus)
library(scales)
median_income <-
get_acs(
state = "Illinois",
geography = "county",
variables = "B19013_001",
geometry = TRUE
)
median_income
median_income |>
ggplot(aes(fill = estimate)) +
geom_sf()
# Check-in break ----------------------------------------------------------
# International Data ------------------------------------------------------
library(rnaturalearth)
ne_countries()
ukraine <-
ne_states(
country = c("Ukraine")
)
ukraine |>
ggplot() +
geom_sf()
# Mapview -----------------------------------------------------------------
library(mapview)
mapview(ukraine)
# Interactive -------------------------------------------------------------
library(ggiraph)
median_income_interactive_plot <-
median_income |>
mutate(estimate_formatted = dollar(estimate)) |>
mutate(tooltip_text = str_glue("{NAME} {estimate_formatted}")) |>
ggplot(aes(
fill = estimate,
tooltip = tooltip_text
)) +
geom_sf_interactive()
girafe(ggobj = median_income_interactive_plot)
Interactive data viz code
---
title: "Interactive Data Viz Example"
format: html
execute:
warning: false
message: false
echo: false
editor_options:
chunk_output_type: console
---
```{r}
library(tidyverse)
library(scales)
library(ggiraph)
```
```{r}
cbem <-
read_csv(here::here("data-raw/cbem.csv"))
```
## Static Plot
```{r}
cbem |>
filter(location == "Oregon") |>
filter(age_group == "Under 18") |>
filter(group != "All Persons") |>
mutate(
group = fct(
group,
levels = c(
"American Indian or Alaska Native",
"Asian or Pacific Islander",
"Black or African American",
"White",
"Hispanic or Latino"
)
)
) |>
mutate(x_position = row_number()) |>
mutate(
x_position = case_when(
group == "Hispanic or Latino" ~ 5.5,
.default = x_position
)
) |>
mutate(percent_formatted = percent(percent)) |>
ggplot(
aes(
x = x_position,
y = percent,
fill = group,
label = percent_formatted
)
) +
geom_col() +
geom_text(
vjust = 1.5,
color = "white"
) +
scale_fill_manual(
values = c(
"American Indian or Alaska Native" = "#9CC892",
"Asian or Pacific Islander" = "#0066cc",
"Black or African American" = "#477A3E",
"White" = "#6CC5E9",
"Hispanic or Latino" = "#ff7400"
)
) +
theme_void() +
theme(legend.position = "none")
```
## Interactive Plot
```{r}
cbem_plot <-
cbem |>
filter(location == "Oregon") |>
filter(age_group == "Under 18") |>
filter(group != "All Persons") |>
mutate(
group = fct(
group,
levels = c(
"American Indian or Alaska Native",
"Asian or Pacific Islander",
"Black or African American",
"White",
"Hispanic or Latino"
)
)
) |>
mutate(x_position = row_number()) |>
mutate(
x_position = case_when(
group == "Hispanic or Latino" ~ 5.5,
.default = x_position
)
) |>
mutate(percent_formatted = percent(percent)) |>
ggplot(
aes(
x = x_position,
y = percent,
fill = group,
label = percent_formatted,
tooltip = percent_formatted
)
) +
geom_col_interactive() +
# geom_text(
# vjust = 1.5,
# color = "white"
# ) +
scale_fill_manual(
values = c(
"American Indian or Alaska Native" = "#9CC892",
"Asian or Pacific Islander" = "#0066cc",
"Black or African American" = "#477A3E",
"White" = "#6CC5E9",
"Hispanic or Latino" = "#ff7400"
)
) +
theme_void() +
theme(legend.position = "none")
girafe(ggobj = cbem_plot)
```
Learn More
Have any questions? Put them below and we will help you out!
Course Content
132 Lessons
1
Welcome to Fundamentals of R
01:20
2
Update Everything
02:26
3
Start a New Project
02:38
4
The Tidyverse
03:24
5
Pipes
03:52
6
select()
04:43
7
mutate()
03:22
8
filter()
10:18
9
Quiz
10
summarize()
05:38
11
Grouped Summaries
04:24
12
arrange()
02:50
13
Create a New Data Frame
03:30
14
Quiz
15
Bring it All Together (Data Wrangling)
07:09
16
Week 2 Project Assignment
13:10
17
Week 2 Coworking Session (Fall 2026)
18
Week 2 Live Session (Fall 2026)
59:16
1
The Grammar of Graphics
04:36
2
Scatterplots
03:40
3
Histograms
04:51
4
Bar Charts
04:53
5
Quiz
6
Setting color and fill Aesthetic Properties
02:43
7
Setting color and fill Scales
05:12
8
Quiz
9
Setting x and y Scales
02:58
10
Adding Text to Plots
05:50
11
Plot Labels
02:59
12
Themes
02:10
13
Facets
02:56
14
Save Plots
02:49
15
Bring it All Together (Data Visualization)
06:14
16
Week 3 Project Assignment
06:02
17
Week 3 Coworking Session (Fall 2026)
18
Week 3 Live Session (Fall 2026)
1:00:46
1
Downloading and Importing Data
08:13
2
Overview of Tidy Data
05:03
3
Tidy Data Rule #1: Every Column is a Variable
06:26
4
Tidy Data Rule #3: Every Cell is a Single Value
09:27
5
Tidy Data Rule #2: Every Row is an Observation
04:05
6
Quiz
7
Week 6 Coworking Session (Fall 2026)
8
Week 6 Live Session (Fall 2026)
59:31
1
Best Practices in Data Visualization
03:38
2
Tidy Data
02:25
3
Pipe Data in ggplot
08:18
4
Reorder Plots to Highlight Findings
03:50
5
Line Charts
04:13
6
Use Color to Highlight Findings
08:23
7
Declutter
07:53
8
Add Descriptive Labels to Your Plots
09:18
9
Use Titles to Highlight Findings
08:30
10
Use Annotations to Explain
06:35
11
Quiz
12
Week 9 Coworking Session (Fall 2026)
13
Week 9 Live Session (Fall 2026)
59:10
1
Advanced Markdown
07:10
2
Tables
15:48
3
Advanced YAML and Code Chunk Options
05:42
4
Inline R Code
03:42
5
Making Your Reports Shine: Word Edition
05:08
6
Making Your Reports Shine: PDF Edition
07:37
7
Making Your Reports Shine: HTML Edition
06:08
8
Presentations
11:12
9
Dashboards
06:20
10
Websites
08:11
11
Publishing Your Work
02:37
12
Quarto Extensions
06:38
13
Parameterized Reporting, Part 1
07:02
14
Parameterized Reporting, Part 2
04:03
15
Parameterized Reporting, Part 3
06:22
16
Quiz
17
Week 12 Coworking Session (Fall 2026)
18
Week 12 Live Session (Fall 2026)
57:26
You need to be signed-in to comment on this post. Login.