创建多列饼图

问题描述 投票:0回答:2

我想创建一个多列饼图。这个有点不寻常的星座对于评估大型调查是必要的。答案总是是/否,有几列与是/否重叠,所以简单地合并它们会改变陈述。最后,每个相关列总共需要绝对数量的肯定答案。

#示例表:

x <- read.csv2(file = textConnection("a;b;c;d
yes;no;yes;no
no;no;yes;no
no;no;yes;no
no;yes;no;no
no;yes;no;no
no;no;no;yes
no;no;no;yes
no;no;yes;yes
no;no;yes;yes
no;yes;yes;no
yes;yes;no;no
yes;yes;no;no
yes;yes;no;no
yes;yes;yes;no
yes;no;yes;no
yes;no;yes;yes
yes;no;yes;yes
no;no;no;yes
no;no;no;no
no;no;no;no
no;no;yes;no
no;no;yes;no
yes;no;no;no
yes;no;no;no"))

最后,应该有一个饼图以百分比显示 a 的是的数量 (x%),b 的是的数量 (y%)...等等。

提前感谢您的帮助。

r sum multiple-columns pie-chart percentage
2个回答
0
投票

这显示了每列“是”的绝对数量。

library(dplyr)
library(tidyr)
library(ggplot2)

x %>%
  pivot_longer(cols = everything()) %>%
  summarise(res = sum(value == "yes"), .by = name) %>%
  ggplot(aes(x="", y=res, fill=name)) +
  geom_bar(stat="identity", width=1) +
  coord_polar("y", start=0) + 
  geom_text(aes(label = res), position = position_stack(vjust = 0.5), 
            color = "white", size=6) +
  scale_fill_brewer(palette="Set1") +
  theme_void()


0
投票

从宽到长重塑,只保留“是”行,然后获取计数和绘图:

d <- stack(x)
tbl <- table(d[ d$values == "yes", "ind" ])
pie(tbl, labels = paste(names(tbl), "-",
                        round(prop.table(tbl) * 100), "%"))

© www.soinside.com 2019 - 2024. All rights reserved.