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

时间:2015-01-07 21:19:48

标签: r raster r-grid

我有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有办法吗?

提前致谢。

2 个答案:

答案 0 :(得分:3)

@ BondedDust建议使用text是完美的,但使用mfrow中的mfcol(或par)图形参数来布局图表网格可能是明智的。然后,您可以使用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)
    })
    
  3. enter image description here

答案 1 :(得分:1)

试试这个:

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