Save Plots
This lesson is called Save Plots, part of the R in 3 Months (Spring 2025) course. This lesson is called Save Plots, part of the R in 3 Months (Spring 2025) course.
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)
# Import Data -------------------------------------------------------------
penguins <- read_csv("penguins.csv")
# Save Plots --------------------------------------------------------------
# If you need to save a plot, you can use the ggsave() function.
# By default ggsave() will save the last plot you made.
# First we plot
ggplot(data = penguin_bill_length_by_island_and_sex,
mapping = aes(x = island,
y = mean_bill_length,
fill = sex)) +
geom_col(position = "dodge") +
labs(title = "Males have longer bills than females",
subtitle = "But they're all good penguins",
caption = "Data from the palmerpenguins R package",
x = NULL,
y = "Mean Bill Length in Millimeters",
fill = NULL) +
theme_economist() +
facet_grid(cols = vars(sex))
# Then we save
ggsave(filename = "plots/penguins-plot.png",
height = 8,
width = 11,
units = "in",
bg = "white",
dpi = 300)
# We can save our plot to other formats as well.
# PDF is a great option because it produces small file sizes
# and high-quality plots.
# You don't need to list dpi here as PDFs are vector based.
ggsave(filename = "plots/penguins-plot.pdf",
height = 8,
width = 11,
units = "in")
# You can also save a plot and then use that within ggsave()
penguins_plot <- ggplot(data = penguin_bill_length_by_island_and_sex,
mapping = aes(x = island,
y = mean_bill_length,
fill = sex)) +
geom_col(position = "dodge") +
labs(title = "Males have longer bills than females",
subtitle = "But they're all good penguins",
caption = "Data from the palmerpenguins R package",
x = NULL,
y = "Mean Bill Length in Millimeters",
fill = NULL) +
theme_economist() +
facet_grid(cols = vars(sex))
penguins_plot
ggsave(plot = penguins_plot,
filename = "plots/penguins-plot-2.pdf",
height = 8,
width = 11,
units = "in")
Your Turn
# Load Packages -----------------------------------------------------------
library(tidyverse)
# Import Data -------------------------------------------------------------
penguins <- read_csv("penguins.csv")
penguin_weight_by_species_and_sex <- penguins |>
drop_na(sex) |>
group_by(species, sex) |>
summarize(mean_weight = mean(body_mass_g))
# Save Plots --------------------------------------------------------------
# Copy the code from your last plot
# Save it as 10cm wide by 20cm tall png file with a white background
# YOUR CODE HERE
Learn More
I have only showed you how to save plots by saving the last plot you made. You can also save a plot as an object and then use this object as an argument in your ggsave function. For more on doing that, see the relevant page from the Stat545 course by Jenny Bryan.
Have any questions? Put them below and we will help you out!
Course Content
127 Lessons
1
Welcome to Getting Started with R
00:57
2
Install R
02:05
3
Install RStudio
02:14
4
Files in R
04:33
5
Projects
07:54
6
Packages
02:38
7
Import Data
05:24
8
Objects and Functions
03:16
9
Examine our Data
12:50
10
Import Our Data Again
07:11
11
Getting Help
07:46
12
Week 1 Live Session (Spring 2025)
1:03:11
1
Welcome to Fundamentals of R
01:36
2
Update Everything
02:45
3
Start a New Project
02:16
4
The Tidyverse
03:34
5
Pipes
04:15
6
select()
07:25
7
mutate()
04:25
8
filter()
10:05
9
summarize()
05:59
10
group_by() and summarize()
05:54
11
arrange()
02:07
12
Create a New Data Frame
03:58
13
Bring it All Together (Data Wrangling)
07:29
14
Week 2 Project Assignment
09:39
15
Week 2 Coworking Session (Spring 2025)
16
Week 2 Live Session (Spring 2025)
1:03:24
1
The Grammar of Graphics
04:39
2
Scatterplots
03:46
3
Histograms
05:47
4
Bar Charts
06:37
5
Setting color and fill Aesthetic Properties
02:39
6
Setting color and fill Scales
05:40
7
Setting x and y Scales
03:09
8
Adding Text to Plots
07:32
9
Plot Labels
03:57
10
Themes
02:19
11
Facets
03:12
12
Save Plots
02:57
13
Bring it All Together (Data Visualization)
06:42
14
Week 3 Project Assignment
03:30
15
Week 3 Coworking Session (Spring 2025)
16
Week 3 Live Session (Spring 2025)
1:02:31
1
Downloading and Importing Data
10:32
2
Overview of Tidy Data
05:50
3
Tidy Data Rule #1: Every Column is a Variable
07:43
4
Tidy Data Rule #3: Every Cell is a Single Value
10:04
5
Tidy Data Rule #2: Every Row is an Observation
04:42
6
Week 6 Coworking Session (Spring 2025)
7
Week 6 Live Session (Spring 2025)
1:02:38
1
Best Practices in Data Visualization
03:44
2
Tidy Data
02:25
3
Pipe Data into ggplot
09:54
4
Reorder Plots to Highlight Findings
03:37
5
Line Charts
04:17
6
Use Color to Highlight Findings
09:16
7
Declutter
08:29
8
Add Descriptive Labels to Your Plots
09:10
9
Use Titles to Highlight Findings
08:14
10
Use Annotations to Explain
07:09
11
Week 9 Coworking Session (Spring 2025)
12
Week 9 Live Session (Spring 2025)
59:09
1
Advanced Markdown
06:43
2
Tables
18:36
3
Advanced YAML and Code Chunk Options
05:53
4
Inline R Code
04:42
5
Making Your Reports Shine: Word Edition
04:30
6
Making Your Reports Shine: PDF Edition
06:11
7
Making Your Reports Shine: HTML Edition
06:06
8
Presentations
10:12
9
Dashboards
05:38
10
Websites
06:43
11
Publishing Your Work
04:38
12
Quarto Extensions
05:50
13
Parameterized Reporting, Part 1
10:57
14
Parameterized Reporting, Part 2
05:11
15
Parameterized Reporting, Part 3
07:47
16
Week 12 Coworking Session (Spring 2025)
17
Week 12 Live Session (Spring 2025)
57:01
You need to be signed-in to comment on this post. Login.
Marisel Strand • March 8, 2024
Hello, why do I get this when trying to save my plot?--thanks!
David Keyes Founder • March 8, 2024
It sounds like you're missing the directory called
plots
. Do you have that directory? Also, make sure you've got units spelled correctly (your code says untis now). :)Marisel Strand • March 8, 2024
Thanks for catching that!:) I'm not sure about that directory... Is that something that I have to create?
David Keyes Founder • March 8, 2024
Yes, if you don't already have the directory you will need to create it.
Leo Gutknecht-Gmeiner • March 27, 2024
How can I save multiple plots at the same time? That would be handy.
David Keyes Founder • March 27, 2024
This gets a bit complicated because it involves creating a custom function and working with the
purrr
package for iteration, but if you want to see how it works, I've written a blog post on the topic.Claire Hazbun • August 12, 2024
Hi, similar question as Marisel below. I did this:
Which gave me this:
I then entered 0. It then said:
I then put
create.dir = TRUE
and then ran the code again which successfully saved the image.Can you explain to me what I just did/what just happened?
David Keyes Founder • August 14, 2024
To be honest, I'm not totally certain. Your code doesn't show you saving into the
plots
folder so I don't really know why it would give you a message about that folder. If you can recreate this and send me a video (here, I can take a look.Tosan Okome • October 28, 2024
Hi. I ran the code below:
And I received the following error message and a blank png file saved to my "Plots" directory.
Can I get a hand?
Gracielle Higino Coach • October 30, 2024
Hi Tosan! That's an interesting error. I was able to reproduce it, but still I got the plot saved despite of the error message (although it was saved with the wrong file name). The error in your code is the first line. You are asking R to save
penguin_weight_by_species_and_sex
as a plot, but this is a dataframe. If, instead, you assign this name to your plot too, then your code should work without errors. I recommend that you name your plot something else and replacepenguin_weight_by_species_and_sex
in your ggsave function, or just plot and save right after, so you don't need to specify which plot you want to save (R will save the last rendered plot by default). Let me know what other questions you have!Tosan Okome • November 3, 2024
You were absolutely right! I've successfully saved my plot. Thanks you.
Ann Wanjiku • March 26, 2025
I believe the solution provided for this exercise has the height and width values swapped. I had the width as 10 cm and the height as 20 cm, but the solution appears different.
Gracielle Higino Coach • March 26, 2025
Thanks for noticing, Ann! We've fixed it.