如何为R中的百分比数据框制作分面饼图?

Posted

技术标签:

【中文标题】如何为R中的百分比数据框制作分面饼图?【英文标题】:How to make faceted pie charts for a dataframe of percentages in R? 【发布时间】:2022-01-21 06:17:51 【问题描述】:

我已经创建了一个融合数据框,其中包含几年的能源百分比(因子变量)作为附加因子或日期:

我怎样才能用ggplot(或plotrix)为不同年份制作漂亮的多面饼图?

到目前为止,我已经达到了:

ggplot(melted_df, aes(x=Year, y=Share, fill=Source)) +
  geom_bar(stat="identity", width=1)+
  coord_polar("y", start=0) +
  geom_text(aes(label = paste0(round(Share*100), "%")), position = position_stack(vjust = 0.5),size=3)+
  labs(x = NULL, y = NULL, fill = NULL, title = "Energy Mix")+
  theme_classic() + theme(axis.line = element_blank(),
          axis.text = element_blank(),
          axis.ticks = element_blank(),
          plot.title = element_text(hjust = 0.5, color = "#666666"))

没有 facet 命令给出了这个,这在美学上并不令人愉快:

如果我添加facet_wrap(~Year) 命令,情况会变得更糟......

【问题讨论】:

很难演示没有样本数据的解决方案供我们使用。我会尝试aes(x=1... 而不是x=Yearfacet_wrap(~Year, scales = free_x) 使用dput(...) 获取数据的可粘贴版本。您的数据图像不是很有帮助。此外,饼图很难阅读,使用条形图几乎总是更好。 非常感谢乔恩·斯普林。有效。现在,我只是想知道如何将饼图标签放在切片之外。再次感谢! 【参考方案1】:

在评论员的建议下,ggplot() 行中的 aes(x=1) 解决了这个问题并制作了正常的圆形平行馅饼:

ggplot(melted_df, aes(x=1, y=Share, fill=Source)) +
  geom_col(width=1,position="fill", color = "black")+
  coord_polar("y", start=0) +
  geom_text(aes(x = 1.7, label = paste0(round(Share*100), "%")), size=2, 
            position = position_stack(vjust = 0.5))+
  labs(x = NULL, y = NULL, fill = NULL, title = "Energy Mix")+
  theme_classic() + theme(axis.line = element_blank(),
                          axis.text = element_blank(),
                          axis.ticks = element_blank(),
                          plot.title = element_text(hjust = 0.5, color = "#666666"))+
  facet_wrap(~Year)

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于如何为R中的百分比数据框制作分面饼图?的主要内容,如果未能解决你的问题,请参考以下文章

如何增强 R 中的多面饼图标签?

如何为数据库中的项目建模折扣?

如何为数据框列表制作条形图?

制作条形图时无法解释输入“百分比”[重复]

R计算数据框中的百分比值

如何使用三列在 R 中制作堆叠条形图,我想使用 barplot() 函数