ggplot2#2中各个方面的注释文本

时间:2018-07-05 08:48:32

标签: r ggplot2 geom-text facet-grid

这是关于帖子Annotating text on individual facet in ggplot2的后续问题,该问题已经对我有很大帮助,但它考虑的是具有单个变量的方面。

我想将文本添加到具有 2个方面变量(facet_grid)的ggplot图的单个面板中。

添加文本之前的代码:

p <- ggplot(mtcars, aes(mpg, wt)) + 
geom_point() +
facet_grid(gear ~ cyl)

结果如下图:

Plot without geom_text

当我添加geom_text时,注释已正确添加,但添加了2个没有数据的其他无意义的面板:

ann_text <- data.frame(mpg = 15,wt = 5,lab = "Text", 
cyl = factor(8,levels = c("4","6","8")), gear = factor(4, levels = c("3",  "4", "5")))

p + geom_text(data = ann_text,label = "Text")

Plot with geom_text, mind 2 additional panels without data

我如何摆脱这两个没有数据的面板?

非常感谢您的时间

1 个答案:

答案 0 :(得分:0)

@ulrike我们如何将gearcyl视为facet_grid()通话中的因素?这样,您完全不必更改数据。之所以将gearcyl视为因素是因为,如果查看mtcars数据集的结构,您会注意到gearcyl包含离散值。这意味着我们可以强迫他们使用factor

library(ggplot2)
ann_text <- data.frame(mpg = 15,wt = 5,lab = "Text", 
                       cyl = factor(8,levels = c("4","6","8")), 
                       gear = factor(4, levels = c("3",  "4", "5")))
ggplot(mtcars, aes(mpg, wt)) + 
  geom_point() +
  facet_grid(factor(gear) ~ factor(cyl))+
  geom_text(aes(mpg,wt, label=lab),
            data = ann_text)

enter image description here