Data visualization, part 2. Code for Quiz 8.
Replace all the ???s. These are answers on your modle quiz.
Run all the individual code chunks to make sure the answers in this file correspond with your quiz.
After you check all your code chunks run, then you can knit it. It won’t knit until al the ???s are replaced.
The quiz assumes that you have watched the videos, downloaded (to your examples folder) and worked through the exercises in exercises_slides-50-61.Rmd
ggsave command at the end of the chunk of the plot you want to preview.Create a plot with the mpg dataset
Add points with geom_point
displ to the x-axishwy to the y-axisAdd 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
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 the directory for this post.
spend_time contains 10 years of data on how many hours Americans spend each day on 5 activities.spend_timespend_time <- read_csv("spend_time.csv")
Start with spend_time
Extract observations for 2011
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
subtitle to Avg hours per day: 2011x and y to NULL so they won’t be labeledAssign the output to p1
Display p1
p1 <- spend_time %>% filter(year == "2011") %>%
ggplot() +
geom_col(aes(x = activity, y = avg_hours, fill = activity)) +
scale_y_continuous(breaks = seq(0, 6, by = 1)) +
labs(subtitle = "Avg hours per day: 2011", x = NULL, y = NULL)
p1

Start with spend_time
*THEN create a plot with it
ADD a barchart with geom_col
year to the x-axisavg_hours to the y-axisactivity to fillADD labs to
Assign the output to p2
Display p2
p2 <- spend_time %>%
ggplot() +
geom_col(aes(x = year, y = avg_hours, fill = activity)) +
labs(subtitle = "Avg hours per day: 2010-2019", x = NULL, y = NULL)
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: Amwerican 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 Survey, https://data.bls.gov/cgi-bin/surveymost?tu")

Use spend_time from the last question patchwork slides
Start with spend_time
Extract observations for leisure/sports
THEN create a plot with that data
ADD points with geom_point
year to the x-axisavg_hours to the y-axisADD lines with geom_smooth
year to the x-axisavg_hours to the y-axisADD breaks for every year on the x-axis with scale_x_continuous
Add labs to
subtitle to Avg hours per day: leisure/sportsx and y to NULL so x and y axes won’t be labeledAssign the output to p4
Display p4
p4 <-
spend_time %>% filter(activity == "leisure/sports") %>%
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: leisure/sports", 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
year to the x-axisavg_hours to the y-axisactivity to coloractivity to groupADD lines with geom_smooth
year to the x-axisavg_hours to the y-axisactivity to coloractivity to groupADD breaks on for every year on the x-axis with scale_x_continuous
ADD coord_cartesian to change the range on the 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
