Steve's Data Tips and Tricks 2023-10-09 22:00:00

[This article was first published on Steve's Data Tips and Tricks, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.


Changing the size of the legend on a plot in R can be a handy skill, especially when you want to enhance the readability and aesthetics of your visualizations. In this blog post, we’ll explore different methods to resize legends on R plots with practical examples. Whether you’re a beginner or an experienced R user, this guide should help you master this essential aspect of data visualization.

Understanding the Basics

Before diving into code examples, let’s understand the basics. In R, legends are essential for explaining the meaning of different elements in your plot, such as colors, lines, or shapes. Legends help your audience interpret the data effectively.

In most cases, R’s base plotting system provides you with control over the legend’s size. The key functions we’ll explore are legend() and guides(). We’ll also delve into how to modify legend size in popular plotting packages like ggplot2.

Method 1: Using the legend() Function

The legend() function allows you to specify the position and appearance of the legend in your plot. To control the legend’s size, you can adjust the cex argument, which stands for “character expansion.”

# Example 1: Change legend size using the legend() function
plot(1:5, 1:5, type = "n", main = "Legend Size Example")
legend("topright", legend = c("A", "B", "C"), cex = 1.5)

In this example, we create a simple plot and use the legend() function to position the legend in the top right corner ("topright") and set the character expansion factor (cex) to 1.5. You can adjust cex to make the legend larger or smaller.

Method 2: Using the guides() Function (ggplot2)

If you prefer working with the ggplot2 package for creating more complex and customizable plots, you can modify the legend size using the theme() function.

# Example 2: Change legend size in ggplot2 using guides()

data <- data.frame(x = 1:5, y = 1:5, label = c("A", "B", "C", "D", "E"))
ggplot(data, aes(x, y, color = label)) +
  geom_point() +
  labs(title = "Legend Size Example in ggplot2") +
  theme(legend.key.size = unit(2, 'cm'))

In this ggplot2 example, we create a scatterplot and use the theme() function to modify the legend’s size. We set the size inside override.aes to control the legend’s size.

Method 3: Using Themes in ggplot2

Another way to adjust legend size in ggplot2 is by customizing the theme. The theme() function allows you to modify various aspects of your plot’s appearance, including the legend.


# Example 3: Change legend size in ggplot2 using themes
ggplot(data, aes(x, y, color = as.factor(label))) +
  geom_point() +
  labs(title = "Legend Size Example with Theme Modification",
       color = "Label") +
    legend.text = element_text(size = 12), 
    legend.title = element_text(size = 14)

In this example, we use the theme() function to change the size of legend text and title separately. This approach provides more fine-grained control over your legend’s appearance.

Try It Yourself!

Now that you’ve seen how to change the size of legends in R, I encourage you to experiment with your own plots. Adjust the cex parameter, use guides() or customize the theme in ggplot2 to suit your specific needs. Practicing these techniques will enhance your data visualization skills and help you create compelling graphics.

Remember, effective legends are crucial for conveying the meaning of your plots, so don’t hesitate to tweak their size until your visualizations look just right. Happy coding, and happy plotting!

To leave a comment for the author, please follow the link and comment on their blog: Steve's Data Tips and Tricks. offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)