R:使用magick在1个面板中显示4个png图像
Posted
技术标签:
【中文标题】R:使用magick在1个面板中显示4个png图像【英文标题】:R: Using magick to display 4 png images in 1 panel 【发布时间】:2021-04-11 12:34:36 【问题描述】:我有许多从另一个脚本保存为 png 的图像(图):
x1.png x2.png x3.png x4.png y1.png y2.png等等。我正在尝试制作这些的 gif,我已经在 magick 中成功完成了。但是,这会每帧循环 1 个图像。我正在尝试一次加载 4 张图像,并将它们拼接在一个面板上,并创建这些面板的 gif。
我已成功创建了这些图像的 gif。 但是,我想一次加载 4 张图像,然后将它们形成 gif。
y <- (list.files(path='foo/bar/', pattern = '*1.png', full.names = TRUE))
plot(y[1]) # does nothing
如何在一个面板中一次加载或显示 4 个 png? 我通常可以使用:
par(mfrow=c(2,2))
plot(a)
plot(b)
plot(c)
plot(d)
但是我正在使用 magick 加载 png(绘图,但我显然不能将它们视为常规绘图)
img1 <- magick::image_read("foo/bar/x1.png")
plot(img1) # does nothing
print(img1) # displays img 1 as a plot, and prints some details in the output window.
我确信我可以重写我的其他代码以显示 4 个图,并将它们保存为 1 个 png,但我正在尝试编写一个小的单独脚本来加载这些预先存在的图像,并将 png 拼接在一起。这可以使用 par(mfrow=c(2,2)) 吗?
我确定我错过了很多简单的东西。谢谢大家的时间。
【问题讨论】:
试试这个***.com/a/52286478/786542 在 ImageMagick 中使用蒙太奇。见legacy.imagemagick.org/Usage/montage 在cowplot
包中查看plot_grid()
【参考方案1】:
您可以使用蒙太奇在 ImageMagick 中做到这一点。例如
montage lena.jpg mandril3.jpg zelda1.jpg peppers.jpg -tile 2x2 -geometry +0+0 montage.gif
【讨论】:
我还在为这个愚蠢的问题道歉,但这对我来说不像是 R 代码。如何在 R 中执行该功能? (使用会产生错误) 对不起,这是命令行代码。不幸的是,我不知道 R 或 Rmagick。但是您的帖子从未提及 R,我也没有注意到您的标题中的 R:。【参考方案2】:要在 R 中运行 ImageMagick 命令(或任何终端代码),您只需将其括在引号中并将其传递给函数 system()。
system("montage lena.jpg mandril3.jpg zelda1.jpg peppers.jpg -tile 2x2 -geometry +0+0 montage.gif")
【讨论】:
以上是关于R:使用magick在1个面板中显示4个png图像的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用magick包的image_write函数将已有图像以任何指定的格式导出保存到磁盘上(例如将原文将从png转化为jpeg)