ggplot 与 ggsave(width=x, height=y) 具有相同的宽度和高度

Spa*_*iel 5 r ggplot2 rstudio

在 R-Studio 中,我使用 生成绘图ggplot,然后将它们保存以ggsave()供进一步使用(我知道,这并不理想,但现在不是可选的)。

我的问题是,当我在保存之前生成绘图时,R 以特定大小向我显示它。有了ggsave,我设置widthheight,这样的元素显示转移等。我只看到这个节省的情节。

我想让 R 之前给我看。因此,我假设我需要在ggplot()某处设置绘图的大小,而不是在ggsave().

我怎样才能以最简单的方式做到这一点?

library(ggplot2)

ggplot(mtcars, aes(mpg,disp)) + geom_point() +
  labs(title="Rocket science title that will get cut by ggsave")

ggsave("rocketScience.png", width=10, height=7, unit="cm")
Run Code Online (Sandbox Code Playgroud)

Moj*_*que 8

您可以使用Eggset_panel_size()包中的函数。使用此功能,您可以固定绘图的面板尺寸。当创建多个绘图时,这非常有用,这些绘图应具有完全相同的绘图区域,但使用不同的轴标签或通常会稍微改变面板尺寸的类似内容。对于带有无缝动画或出版物的演示文稿特别有用。它还确保预览和保存的绘图中具有相同的尺寸。

p <- ggplot(mtcars, aes(mpg,disp)) +
      geom_point() +
      labs(title="Rocket science title that will get cut by ggsave")

#to view the plot
gridExtra::grid.arrange(egg::set_panel_size(p=p, width=unit(5, "cm"), height=unit(7, "cm")))

#to save the plot
ggsave(filename = "myplot.pdf", plot = egg::set_panel_size(p=p, width=unit(5, "cm"), height=unit(7, "cm")))
Run Code Online (Sandbox Code Playgroud)

在 ggsave 中,您仍然可以操纵保存的整个“页面”的大小,但这只会影响绘图周围的空白量。实际面板尺寸将保持固定。上面的示例图,宽度为 5 厘米或 15 厘米: 在此输入图像描述 在此输入图像描述