Выделите / Нарисуйте рамку вокруг некоторых графиков при использовании `facet_grid` в ggplot2 - PullRequest
2 голосов
/ 11 октября 2019

Я создаю матрицу графиков, аналогичную

ggplot(mpg, aes(displ, hwy)) + geom_point() + facet_grid(rows = vars(cyl), cols = vars(drv))

Теперь я хотел бы иметь какой-нибудь способ выделить некоторые из отдельных графиков, скажем, те, где cyl равен 5 или 6,и drv равно f. Итак, в идеале это может выглядеть так:

enter image description here

Но я также был бы рад, если бы эти панели выглядели по-другому, установив для ggtheme значениеклассический или аналогичный.

Однако мне очень неясно, как я могу изменить индивидуально выбранные графики в матрице графиков, сгенерированных с помощью facet_grid

1 Ответ

1 голос
/ 11 октября 2019

Из @joran найден ответ здесь , вот что я получаю:

[РЕДАКТИРОВАТЬ] код, отредактированный для выбора нескольких граней

    if(!require(tidyverse)){install.packages("tidyverse")}
    library(tidyverse)

    #dummy dataset

    df = data.frame(type = as.character(c("a", "b", "c", "d")),
                    id = as.character(c("M5", "G5", "A7", "S3")),
                    val = runif(4, min = 1, max = 10),
                    temp = runif(4))

    # use a rectangle to individually select plots
ggplot(data = df, aes(x = val, y = temp)) + 
  geom_point() +
  geom_rect(data = subset(df, type %in% c("b", "c") & id %in% c("A7","G5")), 
                          fill = NA, colour = "red", xmin = -Inf,xmax = Inf,
            ymin = -Inf,ymax = Inf) +
  facet_grid(type~id)

Не используетсяtheme(), но, кажется, достаточно просто выделить некоторые грани.

enter image description here

...