簡體   English   中英

R:將alpha值添加到png-image

[英]R: add alpha-value to png-image

有沒有辦法讓rasterGrob對象部分透明,所以要為它添加一個alpha因子? 我通過annotation_custom插入一個png-image(作為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值的建議不起作用:

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的錯誤Error in m[, , 1]: wrong number of dimensions

直接來自@baptiste的ggplot2博客 您可以在創建w時調整alpha。

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

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM