ggplot: как получить одинаковую ширину полосы на разных гранях - PullRequest
1 голос
/ 26 мая 2020

Мне регулярно приходится создавать сюжеты, подобные приведенному ниже. Что меня несколько раздражает в результате, так это расположение и размер / (размер) ширины полосы на фасете B.

В идеале я бы хотел, чтобы панель располагалась на том же уровне / высоте, что и полоса c в фасете A и два оставшихся «пробела» (где a и b расположены в фасете A) остаются пустыми в фасете B.

library(tidyverse)

df <- tibble::tribble(
  ~group, ~unit, ~value,
     "A",   "a",    10L,
     "A",   "b",    15L,
     "A",   "c",    20L,
     "A",   "c",    25L,
     "B",   "d",    10L
  )

df %>% 
  ggplot()+
  geom_bar(aes(x=unit,
               y=value),
           stat="identity")+
  facet_wrap(vars(group),
             scales = "free_y")+
  coord_flip()

Создано 26 мая 2020 г. пакетом REPEX (v0.3.0)

Я знаю, что могу использовать scales="free" или patchwork, cowplot пакет и др. c. Но насколько я могу судить, ни один из этих подходов не дал бы желаемого результата.

Есть идеи? Большое спасибо!

1 Ответ

2 голосов
/ 26 мая 2020

Единственный способ, который я могу придумать, - это жестко запрограммировать ширину полос:

ggplot(df, aes(x = unit, y = value))+
  geom_col(width = c(0.9, 0.9, 0.9, 0.9, 0.35)) +
  facet_wrap(vars(group), scales = 'free_y')+
  coord_flip()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...