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

时间:2019-09-05 14:18:44

标签: 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")

2 个答案:

答案 0 :(得分:1)

您可以使用egg软件包中的set_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")))

在ggsave内,您仍然可以操纵保存的整个“页面”的大小,但这只会影响绘图周围的空白空间。实际面板尺寸将保持不变。 从上方以5厘米或15厘米为宽度的示例绘图: enter image description here enter image description here

答案 1 :(得分:0)

我不认为这可以通过ggplot设置实现。如果使用RMarkdown,则可能会绕过它,因为您可以 通过fig.widthfig.height参数设置markdown块的输出高度和高度。

enter image description here