r-从网格中裁剪ggsave的顶部和底部输出.排列PNG文件


library(grid)
library(gridExtra)
library(png)
library(ggplot2)
library(RCurl)
PNG_1 <- readPNG(getURLContent("https://i.ibb.co/MVx1QsQ/A.png"))
PNG_2 <- readPNG(getURLContent("https://i.ibb.co/kHVGNfQ/B.png"))
PNG_3 <- readPNG(getURLContent("https://i.ibb.co/yVf3Hjg/C.png"))
grid <- grid.arrange(rasterGrob(PNG_1), rasterGrob(PNG_2), rasterGrob(PNG_3), ncol=3)
ggsave(grid,filename="output.png")

输出.png

尝试手动设置输出维度,但没有成功。

只需删除较大的上下边距即可。谢谢

随着绘图适应设备尺寸,获取零件尺寸并不简单。我认为最简单的方法是根据PNG的尺寸计算纵横比,并将设备大小提供给ggsave。

asp <- (ncol(PNG_1)+ncol(PNG_2)+ncol(PNG_3))/max(nrow(PNG_1),nrow(PNG_2),nrow(PNG_3))
ggsave(grid, filename= ..., width=5, height=5/asp)

为了缝合那些PNG,你可以使用这个代码来保持原始像素数。我们不能使用cbind/rbind函数,因为readPNG返回的是数组而不是矩阵。幸运的是,abind包提供了一个函数abind(along=2表示cbindalong=1表示rbind(

library(abind)
PNG <- abind(PNG_1,PNG_2,PNG_3,along=2)
writePNG(PNG,"output.png")

最新更新