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')
添加标题。例如:
下载一些示例 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)
})
使用mfrow
将绘图设置为4行3列,并为mar
的标题添加上边距。然后使用 sapply
(例如)迭代 pngs
的元素(好吧,实际上是元素的索引,1
到 12
),依次绘制每个元素:
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)
})
我有 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')
添加标题。例如:
下载一些示例 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) })
使用
mfrow
将绘图设置为4行3列,并为mar
的标题添加上边距。然后使用sapply
(例如)迭代pngs
的元素(好吧,实际上是元素的索引,1
到12
),依次绘制每个元素: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) })