Skip to content
R for the Rest of Us Logo

This lesson is locked

Get access to all lessons in this course.

If the video is not playing correctly, you can watch it in a new window

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!

You need to be signed-in to comment on this post. Login.

Marisel Strand

Marisel Strand

March 8, 2024

Hello, why do I get this when trying to save my plot?--thanks!

ggsave(filename = "plots/penguins_by_weight_species.png",
       height = 20,
       width = 10,
       untis = "cm",
       bg = "white",
       dpi = 300)
Cannot find directory plots.
 Would you like to create a new directory?

1: Yes
2: No

Selection:

David Keyes

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

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

David Keyes Founder

March 8, 2024

Yes, if you don't already have the directory you will need to create it.

Leo Gutknecht-Gmeiner

Leo Gutknecht-Gmeiner

March 27, 2024

How can I save multiple plots at the same time? That would be handy.

David Keyes

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.