25

如何删除ggsave中的白边?

我的问题与Remove white space (ie, margins) ggplot2 in R 完全相同。但是,那里的答案对我来说并不理想。我不想对固定但未知的纵横比进行反复试验,而是想给出ggsave一个height并且weight希望我的情节(即标题顶部到 x 标签底部)自动扩展到该配置而没有白边距。

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

4

5 回答 5

27

从ggplot2 中的 Remove Plot Margins 中找到答案

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

做这项工作

于 2016-02-12T09:13:41.743 回答
7

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

knitr::plot_crop()
于 2020-11-17T17:12:01.853 回答
5

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

# 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/

于 2019-08-17T05:53:43.570 回答
1

如果 pdfpdfcrop不是你的东西,例如你使用 png 标志在 png 中工作 - 那么请在此处查看我的答案:如何以正确的纵横比保存 ggplot2 图形?

于 2020-05-01T14:20:39.173 回答
0

我最终在之后添加了这样的命令ggsave

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

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

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

system("/usr/local/bin/mogrify -trim -shave 4x4 output.png")
于 2021-02-25T18:57:18.197 回答