在ggsave中将画布大小设置为固定宽度,同时保持绘图的纵横比

时间:2019-02-26 18:40:08

标签: r ggplot2 plot

长话短说,我为学生制作youtube视频,并制作了大量图形。到目前为止,我已经将图像导入到Premiere中,调整了它们的大小,然后在ggplot图形后面放置了单独的白色背景图像。这有点乏味,我希望能够直接从R导出为适当的大小(1920x1080 p),所以我不必调整大小和添加背景图像。

我能够调整图形的大小,但是现在可以拉伸它了:

enter image description here

我希望它看起来像这样(我将框放在图像和画布周围,以使情节结束和背景画布开始的地方更清楚):

enter image description here

我知道我可以指定外部边距(请参阅How can I control the canvas size in ggplot?),但这需要我为每个图设置外部边距;有时我的地块比高大,有时我的地块比宽大。 ggsave似乎尊重长宽比,并最大化一个尺寸或另一个尺寸。

那么如何在保持正确的宽高比的同时设置外部页边距?

1 个答案:

答案 0 :(得分:0)

您可以将面板尺寸设置为特定值,

library(egg)
library(ggplot2)
library(grid)

p <- ggplot() + labs(x = 'x title', y = 'y title')

ggsave('notset.png', p, width = 6.4, height = 3.6, units = 'in', dpi = 300)

ggsave('set.png', egg::set_panel_size(p, width=unit(4, "in"), height=unit(3, "in")), 
       width = 6.4, height = 3.6, units = 'in', dpi = 300)