【问题标题】:Annotation text on individual facet in ggplot2 # 2ggplot2 # 2 中各个方面的注释文本
【发布时间】:2018-07-05 08:48:31
【问题描述】:

这是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

我怎样才能摆脱这两个没有数据的附加面板?

非常感谢您的宝贵时间

【问题讨论】:

  • 如果你创建 ann_text 有点不同,它对我有用:ann_text &lt;- data.frame(mpg = 15,wt = 5,lab = "Text", cyl = c(8), gear = c(4))。我对您选择 factor 感到有些困惑,因为 gear 和 cyl 不是 mtcars 中的因素。
  • 非常感谢,这确实解决了我的问题!

标签: r ggplot2 geom-text facet-grid


【解决方案1】:

@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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    相关资源
    最近更新 更多