首页 > 解决方案 > 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() 时会出现问题。

然后我的饼图如下所示:

一小一甜甜圈饼图

任何想法如何创建两个相同大小的饼图?

标签: rpie-chart

解决方案


我已经用一个我刚刚命名为“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()


推荐阅读