11

ラスターグロブオブジェクトを部分的に透明にして、それにアルファファクターを追加する方法はありますか?ggplot2によるpng画像(rasterGrobとして)を挿入することにより、プロット内の透かしとしてロゴを使用していannotation_customます。ただし、とは異なり、ここでannotatealphaオプションが機能しないため、事前に画像を変更する必要があると思います。

バティストが彼のブログで示唆していることに基づく簡単な例として、これまでのところ、私はそれを次のように行っています。

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ブログから直接。を作成するときにアルファを調整できます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 に答える