Reputation: 2561
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)
Upvotes: 4
Views: 15105
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)
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
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
Reputation: 1095
Try:
png('iris.png', width = 1920,height = 1080)
print(plot_total)
dev.off()
Upvotes: 1