R ggplot,删除 ggsave/ggplot 中的白边距

R ggplot, remove white margins in ggsave/ggplot

提问人:jf328 提问时间:2/12/2016 最后编辑:Dave2ejf328 更新时间:5/17/2021 访问量:30192

问:

如何删除 ggsave 中的白边距?

我的问题与 R 中的删除空格(即边距)ggplot2 完全相同。然而,那里的答案对我来说并不理想。与其对固定但未知的纵横比进行反复试验,不如给出一个 and,并希望我的图(即标题顶部到 x 标签的底部)自动扩展到该配置,没有白边距。ggsaveheightweight

如何去除.png周围奇怪的白色边缘(用 r、ggplot 绘制)?提供了一种使边距透明的方法,但它们仍然存在,并且绘图小于我在保存的文件中设置的情节。heightwidth

r ggplot2 (英语) ggsave

评论


答:

40赞 jf328 2/12/2016 #1

ggplot2 中的删除绘图边距中找到答案

theme(plot.margin=grid::unit(c(0,0,0,0), "mm"))

完成工作

评论

3赞 JaBe 11/18/2020
当纵横比更改时,例如 这是行不通的。theme(aspect.ratio=9/16)
4赞 jparanich 2/2/2022
不知道为什么这个答案被接受。这仅删除了边距,使轴标签、图表标题和面板的边距均为 0。白色边框仍将用 ggsave 打印。
0赞 wptmdoorn 6/28/2023
@JaBe,关于如何使其与 theme(aspect.ratio=...) 一起使用的任何提示?几天来一直在寻找这个。
6赞 Omar Wasow 8/17/2019 #2

如果您使用的是 Unix 或 Mac OS,当各种边距选项不够修剪时,另一种选择是通过 的功能使用 Unix 中可用的命令来调用系统命令:pdfcropR

# after saving image, run pdfcrop 
system2(command = "pdfcrop", 
        args    = c("name_or_path_of_file_before_crop.pdf", 
                    "name_or_path_of_file_after_crop.pdf") 
        )

有关详细信息,请参阅:https://robjhyndman.com/hyndsight/crop-r-figures/

评论

2赞 groceryheist 10/29/2019
接受的答案不能满足我的需要,但 pdfcrop 可以。谢谢!
0赞 user2363777 2/18/2022
pdfcropmacOS UNIX(Monterey,v12.2.1)中不存在。
0赞 Omar Wasow 2/21/2022
刚刚在 MacOS Monterey v12.1 (21C52) 上测试了 pdfcrop 在终端和 R 中,它运行良好。似乎不太可能从Unix中删除一个相当标准的实用程序。
1赞 Scrope 5/1/2020 #3

如果 pdf 不是你的菜,例如你在带有 png 标志的 png 中工作 - 那么请看我的答案 这里: 如何以适当的纵横比保存 ggplot2 图形?pdfcrop

8赞 JaBe 11/18/2020 #4

在链接到这篇博文的答案中,有一个解决方案也适用于不同的纵横比。您可以裁剪硬盘上的映像,独立于操作系统:

knitr::plot_crop()
0赞 nisetama 2/26/2021 #5

我最终在以下内容之后添加了这样的命令:ggsave

system("/usr/local/bin/mogrify -trim -border 8 -bordercolor white output.png")

-trim删除现有边距,并在绘图周围添加一个小的 8px 边距。-border 8 -bordercolor white

对于具有灰色背景的绘图,绘图边缘周围会留下一些白色像素,因此我使用该选项删除了一些额外的像素:-shave

system("/usr/local/bin/mogrify -trim -shave 4x4 output.png")