Текст аннотации на отдельном фасете в ggplot2 # 2

Это дополнительный вопрос к сообщению Аннотирование текста на отдельном фасете в ggplot2, который мне уже очень помог, но учитывает аспекты с одной переменной.

Я хотел бы добавить текст на одну панель графика ggplot с 2 переменными фасетирования (facet_grid).

Код перед добавлением текста:

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

приводит к следующему графику:

График без 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")

Постройте график с geom_text, обратите внимание на две дополнительные панели без данных

Как мне избавиться от этих двух дополнительных панелей без данных?

Большое спасибо за ваше время


person Ulrike    schedule 05.07.2018    source источник
comment
У меня это сработает, если вы создадите ann_text немного иначе: ann_text <- data.frame(mpg = 15,wt = 5,lab = "Text", cyl = c(8), gear = c(4)). Меня немного смутил ваш выбор factor, потому что шестерня и цилиндр не являются факторами в mtcars.   -  person CMichael    schedule 05.07.2018
comment
Большое спасибо, это действительно решило мою проблему!   -  person Ulrike    schedule 05.07.2018


Ответы (1)


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

введите описание изображения здесь

person mnm    schedule 30.07.2018