在r中加入带有数据帧的图像

时间:2017-07-06 23:53:59

标签: r image dataframe jpeg r-grid

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

我希望 PDF文件包含两个已加入的导入图像和一个数据框,如图所示:

Final output

这是我正在使用但不起作用的代码。

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()

1 个答案:

答案 0 :(得分:2)

此代码可实现您的目标:

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")

给出了这张图片:

enter image description here

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

vignette of magick解释了这一点以及更多内容:使用R处理图像是一种非常宝贵的资源。

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

但是,如果你有进一步的治疗与R,那么你只需将图像转换为raster并继续使用它:as.raster(side_by_side)