R - 使用 rasterImage 为图像添加标题

R - add title to images with rasterImage

我有 12 个 12 个 PNG 文件,我想在 R 中用 4x3 网格将它们合并到一个图中。

到目前为止我可以创建网格,

plot(c(0,4), c(0,3), type = "n", xaxt = "n", yaxt = "n", xlab = "", ylab = "")

我可以用

添加图像
rasterImage(readPNG("image1.png"), 0, 3, 1, 2)
rasterImage(readPNG("image2.png"), 1, 3, 2, 2)

等等

我得到了我想要的,但我还想为情节中的每张图片添加一个标题。像 image1 应该有 a。 Image1 和 image2 应该有 b。 Image2 在图像之上。有没有办法在 R 中做?

提前致谢。

试试这个:

 text(x=0.5,y=2.95, labels="a. Image1")
 text(x=1.5,y=2.95, labels="b. Image1")

如果需要加粗,则需要plotmath表达式:

text(x=1.5,y=2.95, labels=expression( bold(b.~Image1) )  )

@BondedDust 使用 text 的建议是完美的,但是在 par 中使用 mfrow(或 mfcol)图形参数来布置绘图网格可能是明智的。然后您可以使用 plot(..., main='foo')title(main='foo') 添加标题。例如:

  1. 下载一些示例 png 图形,并将它们读入列表:

    library(png)
    pngs <- lapply(LETTERS[1:12], function(x) {
      u <- 'http://icons.iconarchive.com/icons/mattahan/umicons/64'
      download.file(mode='wb', sprintf('%s/Letter-%s-icon.png', u, x), 
                    f <- tempfile(fileext='.png'))
      readPNG(f)
    })
    
  2. 使用mfrow将绘图设置为4行3列,并为mar的标题添加上边距。然后使用 sapply(例如)迭代 pngs 的元素(好吧,实际上是元素的索引,112),依次绘制每个元素:

    par(mfrow=c(4, 3), mar=c(0, 0, 3, 0))
    sapply(seq_along(pngs), function(i) {
      plot.new()
      plot.window(xlim=c(0, 1), ylim=c(0, 1), asp=1)
      rasterImage(pngs[[i]], 0, 0, 1, 1)
      title(paste0(letters[i], '. Image ', i), font.main=2)
    })