2

アリス、ボブ、チャック、ダナの 4 人のデータをグラフにするとします。私は ggplot2 を使用して、1 人あたり 1 つのファセットを持つファセット プロットを作成しています。ディスクには、Alice.png、Bob.png、Chuck.png、および Dana.png の 4 つの画像もあります。(明らかに、これは 4 つ以上のファセットにスケーリングする必要がある合成例です:)

理想的には、ファセット ラベルの代わりに、対応する画像で各ファセットに注釈を付ける方法はありますか (ただし、ラベルのすぐ下の画像に満足しています)。おそらく、ここで使用されているテクニックに似たものがあります: Use image instead of labels in ggplot2 legend ? さまざまな注釈メソッドのドキュメントを読んでみましたが、私の R-fu では不十分です。

4

1 に答える 1

5

あまりエレガントではありませんが、ストリップ ラベルの上にグロブを追加できます。

library(ggplot2)

d <- expand.grid(x=1:2,y=1:2, f=letters[1:2])
p <- qplot(x,y,data=d) + facet_wrap(~f)

g <- ggplot_gtable(ggplot_build(p))

library(gtable)
library(RCurl)
library(png)
shark <- readPNG(getURLContent("http://i.imgur.com/EOc2V.png"))
tiger <- readPNG(getURLContent("http://i.imgur.com/zjIh5.png"))

strips <- grep("strip", g$layout$name)
new_grobs <- list(rasterGrob(shark, width=1, height=1),
                  rasterGrob(tiger, width=1, height=1))
g <- with(g$layout[strips,],
          gtable_add_grob(g, new_grobs,
                          t=t, l=l, b=b, r=r, name="strip_predator") )        
grid.draw(g)

編集:グロブを直接置き換えることもできます。

strips <- grep("strip", names(g$grobs))
new_grobs <- list(rectGrob(gp=gpar(fill="red", alpha=0.2)),
                  rectGrob(gp=gpar(fill="blue", alpha=0.2)))
g$grobs[strips] <- new_grobs
grid.draw(g)
于 2012-10-31T06:31:43.857 に答える