Save Plots
This lesson is called Save Plots, part of the Fundamentals of R course. This lesson is called Save Plots, part of the Fundamentals of R 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
34 Lessons
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
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.