MLEN
MLEN

Reputation: 2561

How to save plots in R and have them nice looking

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

Upvotes: 4

Views: 15105

Answers (3)

Claus Wilke
Claus Wilke

Reputation: 17810

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.

Upvotes: 1

Bjorn
Bjorn

Reputation: 97

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.

Upvotes: 4

Balter
Balter

Reputation: 1095

Try:

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

Upvotes: 1

Related Questions