ggplot: покройте заголовок `facet_grid` прямоугольником - PullRequest
0 голосов
/ 24 марта 2020

Это расширение / хак к аналогичному вопросу, который я задал здесь .

Я создал график в ggplot, и я хочу покрыть заголовки facet_grid прямоугольником.

Используя geom_rect Мне удалось распределить прямоугольники по каждому фасету. Тем не менее, как я могу распределить прямоугольники по заголовкам?

Текущий график: enter image description here

Ожидаемый график:

enter image description here

Пример данных и скрипт:

library(tidyverse)

df <- head(mtcars, 5)

plot <- df %>% 
  ggplot(aes(gear, disp)) + 
  geom_bar(stat = "identity") + 
  facet_grid(~am + carb,
             space = "free_x", 
             scales = "free_x") +
  ggplot2::theme(
    panel.spacing.x = unit(0,"cm"), 
    axis.ticks.length=unit(.25, "cm"), 
    strip.placement = "outside",
    legend.position = "top",
    legend.justification = "center",
    legend.direction = "horizontal",
    legend.key.size = ggplot2::unit(1.5, "lines"),
    # switch off the rectangle around symbols
    legend.key = ggplot2::element_blank(),
    legend.key.width = grid::unit(2, "lines"),
    # # facet titles
    strip.background = ggplot2::element_rect(
      colour = "black",
      fill = "white"),
    panel.background = ggplot2::element_rect(
      colour = "white",
      fill = "white"), 
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank())

plot + 
  geom_rect(aes(xmin=2.4, xmax=2.7, ymin=400, ymax=300),
            color="black", fill="white") +
  geom_text(aes(x = 2.5, y = 400, label="world"), size=2)

1 Ответ

1 голос
/ 24 марта 2020

Как указано в соответствующем сообщении, теперь можно легко создавать вложенные фасеты с пакетом ggnomics, доступным на GitHub.

Это не вполне , в точности то, что вы просили здесь (аннотирование за пределами области графика прямоугольниками, которые go поперек граней), но, вероятно, в итоге получается то, что вы хотите ... Аннотирование через грани потребовался бы другой взлом гроба ...

#devtools::install_github("teunbrand/ggnomics")
  library(ggnomics)
#> Loading required package: ggplot2
  library(tidyverse)

  mydat<- head(mtcars, 5)
  mydat %>% 
    ggplot(aes(gear, disp)) + 
    geom_bar(stat = "identity") + 
    facet_nested(~am + carb) +
    theme(panel.spacing.x = unit(0,"cm"), 
          axis.ticks.length=unit(.25, "cm"), 
          strip.placement = "inside",
          strip.background = element_rect( colour = "black", fill = "white"),
          panel.background = element_rect( colour = "black", fill = "white"))

Создан в 2020-03-24 пакетом представлением (v0 .3.0)

...