r - 在R中将条形图转换为饼图

标签 r charts ggplot2 bar-chart pie-chart

我有以下数据和代码:

dd
  grp categ condition value
1   A     X         P     2
2   B     X         P     5
3   A     Y         P     9
4   B     Y         P     6
5   A     X         Q     4
6   B     X         Q     5
7   A     Y         Q     8
8   B     Y         Q     2
> 
> 
dput(dd)
structure(list(grp = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 
2L), .Label = c("A", "B"), class = "factor"), categ = structure(c(1L, 
1L, 2L, 2L, 1L, 1L, 2L, 2L), .Label = c("X", "Y"), class = "factor"), 
    condition = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), .Label = c("P", 
    "Q"), class = "factor"), value = c(2, 5, 9, 6, 4, 5, 8, 2
    )), .Names = c("grp", "categ", "condition", "value"), out.attrs = structure(list(
    dim = structure(c(2L, 2L, 2L), .Names = c("grp", "categ", 
    "condition")), dimnames = structure(list(grp = c("grp=A", 
    "grp=B"), categ = c("categ=X", "categ=Y"), condition = c("condition=P", 
    "condition=Q")), .Names = c("grp", "categ", "condition"))), .Names = c("dim", 
"dimnames")), row.names = c(NA, -8L), class = "data.frame")


ggplot(dd, aes(grp,value, fill=condition))+geom_bar(stat='identity')+facet_grid(~categ)

enter image description here

如何将此条形图转换为饼图?我在这里想要 4 个馅饼,它们的大小对应于这里各个条的高度。我试过以下但他们没有工作:

ggplot(dd, aes(grp,value, fill=condition))+geom_bar(stat='identity')+facet_grid(~categ)+coord_polar()
ggplot(dd, aes(grp,value, fill=condition))+geom_bar(stat='identity')+facet_grid(~categ)+coord_polar('y')

我还尝试制作类似于 Pie charts in ggplot2 with variable pie sizes 的饼图但我无法管理我的数据。感谢您的帮助。

最佳答案

使用与您发布的链接中相同的想法,您可以添加一列 size 做您的数据框,它将是每个组的值的总和,并将其用作 宽度参数:

library(dplyr)
dd<-dd %>% group_by(categ,grp) %>% mutate(size=sum(value))
ggplot(dd, aes(x=size/2,y=value,fill=condition,width=size))+geom_bar(position="fill",stat='identity')+facet_grid(grp~categ)+coord_polar("y")

enter image description here

关于r - 在R中将条形图转换为饼图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28493441/

相关文章:

r - ggplot2 : Show only necessary digits? 中的对数轴标签

r - 在ggplot2中突出显示特定x范围内的区域

r - Terra 等效于 raster::stack()?

R:从数据表中选择范围内的值

r - 如何删除警告 : Rcpp/DataFrame. h :136:18: warning unused variable 'data' ?

r - 如何使用显示 CLD 字母的箱线图显示 Tukey 测试的结果

javascript - TypeError : google. visualization.DataTable 不是构造函数

charts - 使用 Google Apps 脚本从图表中获取所有系列

android - 绘制统计图表的最佳方法是什么?

r - 在网格中制作一个矩形图例,并标记行和列