在r中将图像与数据框合并

Alf*_*_MF 5 jpeg r image dataframe r-grid

这可能是一个非常基本的问题,但是我对R中的图像不熟悉。

我想要一个包含两个连接的导入图像和一个数据框的PDF文件,该图像示例说明:

最终输出

这是我正在使用但无法正常工作的代码。

library(grid)
library(useful)
library(magick)

# Read external images
imageA <- image_read("imageA.jpg") 
imageB <- image_read("imageB.jpg") 

# Create data frame
df <- data.frame(1:3)

# Create PDF
pdf("/Mydocument.pdf", width = 10, height = 20)
grid.newpage() 

# Create matrix layout
pushViewport(viewport(layout = grid.layout(1, 3)))

# Place elements inside grid
print(imageA, vp = vplayout(1, 1)) 
print(imageB, vp = vplayout(1, 2))
print(df, vp = vplayout(1, 3)) 

dev.off()
Run Code Online (Sandbox Code Playgroud)

Jea*_*lie 3

这段代码实现了你想要的:

require('magick')

# Read external images
frink = image_read("https://jeroen.github.io/images/frink.png")
logo = image_read("https://www.r-project.org/logo/Rlogo.png")
imgs = c(frink, logo)

# concatenate them left-to-right (use 'stack=T' to do it top-to-bottom)
side_by_side = image_append(imgs, stack=F)

# save the pdf
image_write(side_by_side, path = "just_a_test.pdf", format = "pdf")
Run Code Online (Sandbox Code Playgroud)

这给出了这个图像:

在此输入图像描述

您可能想要垂直缩放图像image_scale(imgs, "x960")- 更改960您想要的任何高度(以像素为单位)。

的小插图magick解释了这一点以及更多内容:使用 R 处理图像是非常有价值的资源。


注意:如果您使用 R 的唯一目的是连接图像,那么您就做错了:直接使用命令行工具convert img1.png img2.gif +append new_combined.pdf的语法convert。它附带 Image Magick 库,Rmagick包是它的包装器。

但如果您需要对 R 进行进一步处理,那么您可以简单地将图像转换为 araster并继续使用它:as.raster(side_by_side)