Две точечные диаграммы рядом в R

#r #pie-chart

#r #круговая диаграмма

Вопрос:

Мне нужны две круговые диаграммы рядом с процентами случаев заболевания Covid19, излечения и смерти для двух округов в Германии. Один округ слева, а другой справа.

Пока мой код выглядит так:

 RKI_COVID19 %>% 
  group_by(Landkreis) %>%
  summarise(fraction_active = (sum(AnzahlFall)-sum(AnzahlGenesen))/sum(AnzahlFall),
            fraction_cured = sum(AnzahlGenesen)/sum(AnzahlFall),
            fraction_death = sum(AnzahlTodesfall)/sum(AnzahlFall)) %>%
  subset(Landkreis == "SK Wolfsburg" | Landkreis == "SK Münster") %>%
  gather("Type", "Value", -Landkreis) %>%  # convert to long format
  ggplot(aes(Landkreis, Value, fill = Type))  
  geom_col(position = "dodge")  
  geom_bar(stat = "identity", position = position_fill())  
  geom_text(aes(label = round(Value, 2)), size = 3, position = position_fill(vjust = 0.5))  
  facet_wrap(~Landkreis)  
  coord_polar("y")  
  

после подмножества() У меня есть все значения, которые меня интересуют:

  Landkreis    fraction_active fraction_cured fraction_death
  <chr>                  <dbl>          <dbl>          <dbl>
1 SK Münster             0.108          0.892         0.0115
2 SK Wolfsburg           0.129          0.871         0.118 
  

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

Проблема возникает при использовании facet_wrap() и coord_polar() в последних двух строках.

Тогда мои круговые диаграммы выглядят так:

Одна маленькая и одна круговая диаграмма в виде пончика

Есть идеи, как создать две круговые диаграммы одинакового размера?

Комментарии:

1. Проблема в том, что вы отображаете Landkreis на x. Попробуйте ggplot(aes(2, Value, fill = Type)) получить одинаковый размер и xlim(0.5, 2.5) сделать его пончиком. Смотрите здесь

Ответ №1:

Я добился этого с помощью фиктивной переменной, которую я только что назвал «n»:

 df = tribble(
  ~n, ~cat, ~act, ~cur, ~dea,
  1, "A", 0.1, 0.8, 0.1,
  1, "B", 0.05, 0.9, 0.05
) %>%
  pivot_longer(cols = c(act,cur,dea))

ggplot(df, aes(n, value, fill = name))  
  geom_bar(stat = "identity", position = position_fill())  
  geom_text(aes(label = round(value, 2)), size = 3, position = position_fill(vjust = 0.5))  
  facet_wrap(~cat)  
  coord_polar("y")
  

Это дает мне:

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

Затем вы можете удалить ось «n», используя theme()