修正了构面上的位置文本注释

时间:2016-06-02 10:40:42

标签: r plot ggplot2 facet

我使用ggplot2在文本注释方面遇到了一些麻烦。我希望有人在这里帮助我。

我想注释不同的文字以修复所有切面图上的位置。我找不到任何解决方案,当我使用" free_y"时怎么做?规模。

我使用了这段代码:

library(ggplot2)
library(grid)

## Data.
d1 = data.frame(sim1 = runif(100), n1 = 500, y1 = runif(100),
                group1 = rep(c("A", "B"), each = 250))
d2 = d1[!duplicated(d1$group1), ]
## Consistent number for all plot.
grob1 <- grobTree(textGrob(paste("N = ", d2[, 2]),
                           x = 0.01, y = 0.95, hjust = 0,
                           gp = gpar(col = "black", fontsize = 13,
                                     fontface = "bold")))
## Varying number for facets.
grob2 <- grobTree(textGrob(d2$sim1, x = 0.01, y = 0.85, hjust = 0,
                           gp = gpar(col = "black", fontsize = 13,
                                     fontface = "bold")))
grob3 <- grobTree(textGrob(d2$y1, x = 0.01, y = 0.75, hjust = 0,
                           gp = gpar(col = "black", fontsize = 13,
                                     fontface = "bold")))
## Plot.
ggplot(d1, aes(log2(sim1))) +
  geom_density() +
  scale_x_continuous("") +
  scale_y_continuous("") +
  facet_wrap(~ group1, ncol = 1, scales = "free_y") +
  annotation_custom(grob1) +
  annotation_custom(grob2) +
  annotation_custom(grob3)

但是,它始终注释所有绘图的第一个元素。

enter image description here

1 个答案:

答案 0 :(得分:0)

好吧,我同意@baptiste。这是一个想法 - 首先创建一个数据框。

ann_text = data.frame(x= c(...), value= c(...), lab=c(...) )

在此,前两个矢量将定位位置,最后一个是标签矢量。然后使用 -

geom_text(data = ann_text, aes(label=lab), size= 5, colour = "red", fontface= ...)