【发布时间】:2012-07-06 15:50:30
【问题描述】:
有没有办法让 rasterGrob-object 部分透明,然后给它添加一个 alpha 因子?我通过插入annotation_custom 的 png 图像(作为 rasterGrob)在ggplot2 图中使用徽标作为水印。不过,和annotate不同的是,alpha选项在这里不起作用,所以我想图像必须提前更改。
作为一个基于 baptiste 在他的博客中建议的简单示例,到目前为止,我是这样做的:
img.path <- readPNG("logo.png")
pngob <- rasterGrob(img.path)
qplot(1:10, rnorm(10), geom = "blank") +
annotation_custom(pngob, xmin=6.8, xmax=Inf, ymin=1, ymax=Inf) +
geom_point()
上面的例子完美运行。
但是,在控制台中输入 dim(pngob) 会返回 NULL。因此,下面关于如何设置alpha-value 的建议不起作用:
m <- pngob
w <- matrix(rgb(m[,,1],m[,,2],m[,,3], m[,,4] * 0.2), nrow=dim(m)[1])
这会返回错误Error in m[, , 1]: wrong number of dimensions
【问题讨论】:
-
4 步,按以下顺序: 1) 将图像读入数组“a”; 2)设置这个数组的alpha通道(第4个切片); 3)用这个数组创建一个
rasterGrob; 4)将grob传递给annotation_custom -
@baptiste 非常感谢,它是这样工作的!如果您将评论作为答案,我会将其标记为已接受。
-
我只总结了罗曼的回答;你应该接受它。