Data visualization, part 2. Code for Quiz 8.
Replace all of the ???
Run all individual code chunks to make sure the answers in this file correspond with your quiz answers
After you check all your code chunks run, then you can knit it. It won’t knit until the ???
are replaced
The quiz assumes that you have watched the videos, downloaded, and worked through the exercises in exercises_slides-1-49.Rmd
ggsave
command at the end of the chunk of the plot that you want to preview.Create a plot with the mpg
dataset
Add points with geom_point
Assign the variable displ
to the x-axis
Assign the variable hwy
to the y-axis
Add facet_wrap
to split the data into panels based on the manufacturer
ggplot(data = mpg) +
geom_point(aes(x = displ, y = hwy)) +
facet_wrap(facets = vars(manufacturer))
Create a plot with the mpg
dataset
Add bars with geom_bar
manufacturer
to the y-axisAdd facet_grid
to split the data into panels based on the class
Let scales vary across columns
Let space taken up by panels vary by columns
ggplot(mpg) +
geom_bar(aes(y = manufacturer)) +
facet_grid(vars(class), scales = "free_y", space = "free_y")
To help you complete this question use:
The patchwork slides and
The vignette: https://patchwork.data-imaginist.com/articles/patchwork.html
Download the file spend_time.csv
from moodle into directory for this post. Or read it in directly:
read_csv("https://estanny.com/static/week8/spend_time.csv")
spend_time
contains 10 years of data on how many hours Americans spend each day on 5 activities
Read it into spend_time
spend_time <- read_csv("https://estanny.com/static/week8/spend_time.csv")
Start with spend_time
Extract observations for 2015
THEN create a plot with that data
ADD a barchart with geom_col
Assign activity
to the x-axis
Assign avg_hours
to the y-axis
Assign activity
to fill
ADD scale_y_continuous
with breaks every hour from 0 to 6 hours
ADD labs
to
Set subtitle
to Avg hours per day: 2015
Set x
and y
to NULL so they won’t be labeled
Assign the output to p1
Display p1
Start with spend_time
THEN create a plot with it
ADD a barchart with geom_col
Assign year
to the x-axis
Assign avg_hours
to the y-axis
Assign activity
to fill
ADD labs to
Set subtitle to “Avg hours per day: 2010-2019”
Set x and y to NULL so they won’t be labeled
Assign the output to p2
Display p2
Use patchwork to display p1
on top of p2
Assign the output to p_all
Display p_all
p_all <- p1/p2
p_all
Start with p_all
AND set legend.position
to ‘none’ to get rid of the legend
Assign the output to p_all_no_legend
Display p_all_no_legend
p_all_no_legend <- p_all & theme(legend.position = 'none')
p_all_no_legend
Start with p_all_no_legend
See how to annotate the composition here: https://patchwork.data-imaginist.com/reference/plot_annotation.html
ADD plot_annotation
set
title
to “How much time Americans spent on selected activities”
caption
to “Source: American Time of Use Survey, https://data.bls.gov/cgi-bin/surveymost?tu”
p_all_no_legend +
plot_annotation(title = "How much time Americans spent on selected activities",
caption = "Source: American Time of USe Survery, https://data.bls.gov/cgi-bin/surveymost?tu")
Use spend_time
from last question patchwork slides
Start with spend_time
Extract observations for housework
THEN create a plot with that data
Add points with geom_point
Assign year
to the x-axis
Assign avg_hours
to the y-axis
ADD line with geom_smooth
Assign year
to the x-axis
Assign avg_hours
to the y-axis
ADD breaks on for every yera on x-axis with scale_x_continuous
ADD labs
to
Set subtitle
to Avg hours per day: housework
Set x
and y
to NULL so x and y axes won’t be labeled
Assign the output to p4
Disply p4
p4 <-
spend_time %>% filter(activity == "housework") %>%
ggplot() +
geom_point(aes(x = year, y = avg_hours)) +
geom_smooth(aes(x = year, y = avg_hours)) +
scale_x_continuous(breaks = seq(2010, 2019, by = 1)) +
labs(subtitle = "Avg hours per day: housework", x = NULL, y = NULL)
p4
Start with p4
ADD coord_cartesian
to change range on y-axis to 0 to 6
Assign the output to p5
Display p5
p5 <- p4 + coord_cartesian(ylim = c(0, 6))
p5
Start with spend_time
Create a plot with that data
ADD points with geom_point
Assign year
to the x-axis
Assign avg_hours
to the y-axis
Assign activity
to color
Assign activity
to group
ADD line with geom_smooth
Assign year
to the x-axis
Assign avg_hours
to the y-axis
Assign activity
to color
Assign activity
to group
ADD breaks on for every year on x-axis with scale_x_continuous
ADD coord_cartesian
to change range on y-axis to 0 to 6
ADD labs
to
x
and y
to NULL so they won’t be labeledAssign the output to p6
Display p6
p6 <-
spend_time %>%
ggplot() +
geom_point(aes(x = year, y = avg_hours, color = activity, group = activity)) +
geom_smooth(aes(x = year, y = avg_hours, color = activity, group = activity)) +
scale_x_continuous(breaks = seq(2010, 2019, by = 1)) +
coord_cartesian(ylim = c(0, 6)) +
labs(x = NULL, y = NULL)
p6
Use patchwork to display p4
and p5
on top of p6
(p4 | p5)/ p6