假设我们有一组相同的图像imgs
(请参见下文)。请注意,实际设置的长度可能会有所不同。
library(magick)
library(rsvg)
img <- image_read_svg("https://image.flaticon.com/icons/svg/132/132233.svg", width = 30)
imgs <- replicate(8, img)
目标是打印包含imgs
中所有图像的正方形图像(即使设置的长度可能不是平方数):
我在image_append()
包中使用image_append(..., stack = TRUE)
和magick
,但没有成功[ref]。理想情况下,我想要一个函数(例如printMosaic(imgs)
)作为输入imgs
并输出上面显示的平方图像。也许使用其他软件包更容易实现?
答案 0 :(得分:2)
这是一个很好的问题!
首先,让我们随机选择所需的图像数量,然后自动计算所需的行数/列数。
# Number of images from 1 to 100
N <- sample(1:1e2, 1)
print(N)
[1] 84
# How many rows/columns we will need
X <- ceiling(sqrt(N))
print(X)
[1] 10
使用multipanelfigure
包中有X
行和列的空白面板:
library(multipanelfigure)
figure <- multi_panel_figure(columns = X, rows = X)
# Iterate from 1 to N images and append them to figure
for(i in seq_len(N)) {
# "./R.png" is path to image I'm using
# With this package you don't need to worry about importing images
figure %<>% fill_panel("./R.png", label = "", scaling = "shrink")
}