How to save plots in R and have them nice looking

10,334

Solution 1

Another solution is using ggsave:

ggsave("plotname.png", plot = p, width = 30, height = 20, units = "cm")

You might have to play around with the dimension a bit to get it right. You can also specify the format you want the plot in (i.e. .png or .tiff, etc.) and you can specify the units as well.

Solution 2

Try:

png('iris.png', width = 1920,height = 1080)
print(plot_total)
dev.off()

Solution 3

The save_plot() function has arguments base_height and base_aspect_ratio that you can adjust (increase, in your case) until you get the answer you want.

For example, you could do:

save_plot("iris.png", plot_total, base_height = 8, base_aspect_ratio = 1.4)

enter image description here

The larger you make base_height, the smaller the fonts will be relative to the image size. And the larger you make base_aspect_ratio, the wider the figure will be relative to its height.

My personal opinion is that you're making the plot too large for the font sizes you use, but that's a separate issue.

Share:
10,334
MLEN
Author by

MLEN

Updated on June 07, 2022

Comments

  • MLEN
    MLEN almost 2 years

    I'm trying to make a plot in R with some data and a table beneath it. In R, it looks good (Picture 1), however, when I export the picture (Picture 2), it looks really ugly and is not in same format.

    library(tidyverse)
    library(cowplot)
    
    
    p <- ggplot(iris, aes(Sepal.Length, Petal.Length, col = Species))  + geom_point()
    
    info <- iris %>% group_by(Species) %>% summarise_all(mean)
    
    table_plot <- tableGrob(info, theme = ttheme_default(base_size = 8), rows = NULL)
    
    plot_total <- plot_grid(p, table_plot, nrow = 2, rel_heights = c(4 / 5, 1 / 5))
    plot_total
    
    save_plot("iris.png", plot_total)
    

    Picture1

    Picture2