裁剪出情节周围的 ggplot2 空白

Posted

技术标签:

【中文标题】裁剪出情节周围的 ggplot2 空白【英文标题】:Crop out ggplot2 whitespace around plot 【发布时间】:2017-07-08 19:28:49 【问题描述】:

当使用coord_fixed() 更改形状时,有没有办法移除 ggplot2 绘图周围的空白?我希望将上方和下方的空白区域裁剪掉,以便仅保留绘图区域和轴标签。我在 R markdown 文件中渲染绘图输出而不保存。

 p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
 p + coord_fixed(ratio = 1)

下面的代码产生了如下图:

【问题讨论】:

你想要这样的东西吗? p + coord_equal() + theme(aspect.ratio = 1) 【参考方案1】:

如果您正在寻找同样适用于 R markdown 的解决方案(即输出为 PDF/html),这为我解决了:首先设置纵横比,然后通过 theme() 删除顶部的额外边距设置。

library(ggplot2)
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, shape = Species, color = Species)) + 
  geom_point(size = 5) + 
  coord_fixed(ratio = 1/2) +
  theme(plot.margin=unit(c(-0.30,0,0,0), "null")) # remove margin around plot

有关详细信息,另请参阅this blog post。

会话信息: MacOs 10.13.6、R 3.6.3、ggplot2_3.3.1

【讨论】:

可能还需要设置裁剪选项:***.com/a/57059235/7941188【参考方案2】:

使用时:

ggplot(mtcars, aes(mpg, wt)) + 
  geom_point() + 
  coord_fixed(ratio = 1) +
  ggsave('plot.jpg', width = 6, height = 1.5, dpi = 300)

你会得到一个空白更少的情节:

另一种选择是使用 png 或 jpeg 设备:

p <- ggplot(mtcars, aes(mpg, wt)) + 
  geom_point() + 
  coord_fixed(ratio = 1)

jpeg('plot.jpg', width = 600, height = 150)
p
dev.off()

【讨论】:

这个解决方案对我不起作用。这还在您的计算机上运行吗? 这是关于 rmarkdown 还是创建图像输出?如果可行,这似乎是一种 hack?

以上是关于裁剪出情节周围的 ggplot2 空白的主要内容,如果未能解决你的问题,请参考以下文章

R:ggplot2,我可以将情节标题设置为环绕并缩小文本以适应情节吗?

ggplot2 - 在情节之外进行注释

由ggplot制作的自动裁剪多面图

如何使 ggplot2 中的图例与我的情节高度相同?

情节推翻了ggplot2的scale_fill_manual的标签

我图例上的形状似乎与情节 ggplot2 中显示的顺序不同