首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用图像注释ggplot2面

使用图像注释ggplot2面
EN

Stack Overflow用户
提问于 2012-10-31 14:00:27
回答 1查看 1.4K关注 0票数 2

假设我正在绘制4个人的数据: Alice,Bob,Chuck和Dana。我正在使用ggplot2制作一个分面图,每个人只有一个分面。我在磁盘上还有4个镜像: Alice.png、Bob.png、Chuck.png和Dana.png。(显然,这是一个需要扩展到4个以上方面的合成示例:)

有没有一种方法可以用相应的图像来注释每个方面,理想情况下可以不使用方面标签(尽管我对标签下面的图像很满意)?也许是类似于这里使用的技术:Use image instead of labels in ggplot2 legend?我试着通读了各种注解方法的文档,但我的R-fu不足以应对挑战!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-31 14:31:44

不是很优雅,但你可以在标签上添加grobs,

代码语言:javascript
复制
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)

编辑:您也可以直接替换grobs,

代码语言:javascript
复制
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)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13152067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档