Текст аннотации на отдельном фасете в ggplot2 # 2 - PullRequest
0 голосов
/ 05 июля 2018

Это дополнительный вопрос к сообщению Аннотирующий текст на отдельном фасете в 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, обратите внимание на 2 дополнительные панели без данных

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

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

1 Ответ

0 голосов
/ 30 июля 2018

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

enter image description here

...