有没有办法让rasterGrob对象部分透明,所以要为它添加一个alpha因子?我ggplot2通过插入一个png-image(作为rasterGrob)在图中使用徽标作为水印annotation_custom.但是,与此不同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()
Run Code Online (Sandbox Code Playgroud)
上面的例子非常有效.
但是,键入dim(pngob)控制台返回NULL.因此,下面关于如何设置alpha-value 的建议不起作用:
m <- pngob
w <- matrix(rgb(m[,,1],m[,,2],m[,,3], m[,,4] * 0.2), nrow=dim(m)[1])
Run Code Online (Sandbox Code Playgroud)
这将返回错误 Error in m[, , 1]: wrong number of dimensions
直接来自@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()
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要一个图像:
qplot(1:10, rnorm(10), geom = "blank") +
annotation_custom(xmin=-Inf, ymin=-Inf, xmax=Inf, ymax=Inf,
rasterGrob(w)) +
geom_point()
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
2674 次 |
| 最近记录: |