11

有没有办法让 rasterGrob-object 部分透明,所以要给它添加一个 alpha 因子?我通过ggplot2annotation_custom. 但是,与 with 不同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 回答 1

11

直接来自@baptiste 的ggplot2 博客。您可以在创建时调整 alpha w

 library(png)
 library(gridExtra)
 m <- readPNG(system.file("img", "Rlogo.png", package="png"), FALSE)
 w <- matrix(rgb(m[,,1],m[,,2],m[,,3], m[,,4] * 0.2), nrow=dim(m)[1]) #0.2 is alpha


 qplot(1:10, rnorm(10), geom = "blank") +
      annotation_custom(xmin=-Inf, ymin=-Inf, xmax=Inf, ymax=Inf, 
         rpatternGrob(motif=w, motif.width = unit(1, "cm"))) +
      geom_point()

在此处输入图像描述

或者,如果您想要一个图像:

qplot(1:10, rnorm(10), geom = "blank") +
  annotation_custom(xmin=-Inf, ymin=-Inf, xmax=Inf, ymax=Inf, 
    rasterGrob(w)) +
  geom_point()

在此处输入图像描述

于 2012-07-06T08:44:35.937 回答