gpt4 book ai didi

r - 带填充和组的 ggplot2

转载 作者:行者123 更新时间:2023-12-02 04:04:46 25 4
gpt4 key购买 nike

我在使用 facet_wrap 分组时填充条形图时遇到问题使用此数据框:

library(ggplot2)
library(gridExtra)
set.seed(1234)
testDat <- data.frame(answer=factor(sample(c("yes", "no"), 60, replace=TRUE)),
which=factor(sample(c("q1", "q2", "q3"), 60, replace=TRUE)))

我想绘制按变量 which 分组的答案。这给了我绝对值:

ggplot(testDat, aes(x=answer)) + 
geom_bar(aes(fill=answer)) + facet_wrap(~which)

这给了我相对值。但不是每组:

ggplot(testDat, aes(x=answer)) + 
geom_bar(aes(y=(..count..)/sum(..count..), fill=answer)) + facet_wrap(~which)

在寻找答案时,我发现这是为了绘制每组的相对值。但是填充颜色不再起作用了

ggplot(testDat, aes(x=answer)) + 
geom_bar(aes(y=(..count..)/sum(..count..), group=which, fill=answer)) + facet_wrap(~which)

它仅适用于“which”而非“answer”的三个不同值

ggplot(testDat, aes(x=answer)) + 
geom_bar(aes(y=(..count..)/sum(..count..), group=which, fill=which)) + facet_wrap(~which)

关于如何填充条形图有什么建议吗?

p1<-ggplot(testDat, aes(x=answer)) + geom_bar(aes(y=(..count..)/sum(..count..), group=which, fill=answer)) + facet_wrap(~which)
p2<-ggplot(testDat, aes(x=answer)) + geom_bar(aes(y=(..count..)/sum(..count..), group=which, fill=which)) + facet_wrap(~which)
grid.arrange(p1,p2)

最佳答案

这是你的想法吗?

library(reshape2)
library(ggplot2)
df <- aggregate(answer~which,testDat,
function(x)c(yes=sum(x=="yes")/length(x),no=sum(x=="no")/length(x)))
df <- data.frame(which=df$which, df$answer)
gg <- melt(df,id=1, variable.name="Answer",value.name="Rel.Pct.")
ggplot(gg) +
geom_bar(aes(x=Answer, y=Rel.Pct., fill=Answer),position="dodge",stat="identity")+
facet_wrap(~which)

不幸的是,聚合函数如sum(...)、min(...)、max(...)、range(...)等,当用于美学映射,不尊重小平面隐含的分组。因此,虽然 ..count.. 在单独使用时(在您的分子中)被正确地子集化,但 sum(..count..) 给出了整个数据集的总数。这就是为什么 (..count..)/sum(..count..) 给出总数的分数,而不是组的分数。

据我所知,唯一的解决方法是创建一个如上所述的腋窝表。

关于r - 带填充和组的 ggplot2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com