gpt4 book ai didi

r - 使用 PNG/JPEG 图像创建多面板图形

转载 作者:行者123 更新时间:2023-12-04 14:45:05 28 4
gpt4 key购买 nike

问题:
我想使用 PNG 或 JPEG 图像制作多面板图形。这些图像不是在 R 中创建的,但我想在 R 中将它们拼凑在一起以形成一个图形。所有图像的大小/尺寸都相同。
我试过的:

library(png)

img1 <- readPNG("filepath/img1.png")
img2 <- readPNG("filepath/img2.png")

library(patchwork)

patch <- img1 + img2
patch
当我运行它时,我收到以下错误:
[ reached getOption("max.print") -- omitted 3 matrix slice(s) ]
我多次增加了最大打印量(到高得离谱的数字):
options(maxprint = 1000000000000)
但仍然得到同样的错误。
然后我尝试使用以下方法将每个图像制作成 ggplot(没有点):
library(ggplot2)

img1plot <- ggplot() +
background_image(img1) +
theme(plot.margin = margin(t=1, l=1, r=1, b=1, unit = "cm"))
返回以下错误:
Error in background_image(d311) : 
could not find function "background_image"
有没有另一种方法可以在 R 中将图像拼凑在一起以制作图形?
编辑:
根据@davidnortes 的评论,我尝试了以下操作:
p1 <- ggplot2::annotation_custom(grid::rasterGrob(img1,
width=ggplot2::unit(1,"npc"),
height=ggplot2::unit(1,"npc")),
-Inf, Inf, -Inf, Inf)

p2 <- ggplot2::annotation_custom(grid::rasterGrob(img2,
width=ggplot2::unit(1,"npc"),
height=ggplot2::unit(1,"npc")),
-Inf, Inf, -Inf, Inf)


library(cowplot)

plots <- plot_grid(
p1, p2,
labels = c('A', 'B'),
align="hv"
)
plots
我收到以下警告消息,但未形成情节:
Warning messages:
1: In as_grob.default(plot) :
Cannot convert object of class LayerInstanceLayerggprotogg into a grob.
2: In as_grob.default(plot) :
Cannot convert object of class LayerInstanceLayerggprotogg into a grob.

最佳答案

我给你几个我最常用的替代方案:
备选方案 1 :组合 ggplot2、网格和牛图 .
可以使用以下方法将每个 PNG 图像嵌入到 ggplot 对象中:

ggplot2::ggplot() + ggplot2::annotation_custom(grid::rasterGrob(YourPNGimage,
width=ggplot2::unit(1,"npc"),
height=ggplot2::unit(1,"npc")),
-Inf, Inf, -Inf, Inf)
那么你可以使用 cowplot::plot_grid()安排你的情节。
备选方案 2:使用 魔法包裹。
该包依靠自己的函数来读取图像,因此我们需要稍微调整您的代码:
img1 <- magick::image_read("filepath/img1.png")
img2 <- magick::image_read("filepath/img2.png")
然后使用像 magick::image_append(c(img1, img2)) 这样的函数你可以组合它们。见 magick package documentation了解更多信息。

关于r - 使用 PNG/JPEG 图像创建多面板图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62516742/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com