如何为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=Year
或facet_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中的百分比数据框制作分面饼图?的主要内容,如果未能解决你的问题,请参考以下文章