这是关于帖子Annotating text on individual facet in ggplot2的后续问题,该问题已经对我有很大帮助,但它考虑的是具有单个变量的方面。
我想将文本添加到具有 2个方面变量(facet_grid)的ggplot图的单个面板中。
添加文本之前的代码:
p <- ggplot(mtcars, aes(mpg, wt)) +
geom_point() +
facet_grid(gear ~ cyl)
结果如下图:
当我添加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
我如何摆脱这两个没有数据的面板?
非常感谢您的时间
答案 0 :(得分:0)
@ulrike我们如何将gear
和cyl
视为facet_grid()
通话中的因素?这样,您完全不必更改数据。之所以将gear
和cyl
视为因素是因为,如果查看mtcars
数据集的结构,您会注意到gear
和cyl
包含离散值。这意味着我们可以强迫他们使用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)