gpt4 book ai didi

r - ggplot2 使用 ...prop... 并按另一个类别对条形图进行分组时出现问题

转载 作者:行者123 更新时间:2023-12-03 00:22:56 25 4
gpt4 key购买 nike

StudentData <- data.frame(gender = sample( c("male","female"), 100, replace=TRUE),
degree = sample( c("Associates", "Masters", "PhD"), 100, replace=TRUE),
category = sample( c("Audit", "Credit"), 100, replace=TRUE))

在下面的数据集中,我尝试创建一个条形图,绘制具有副学士学位、硕士学位或博士学位的样本的百分比,按性别分隔(通过使用 facet_grid() 完成)。这是我到目前为止生成的:

StudentData %>% ggplot(., aes(x=degree, group=gender)) + 
geom_bar(aes(y=..prop..), stat="count", position=position_dodge()) +
geom_text(aes(label=scales::percent(round(..prop..,2)),
y=..prop..), stat="count", vjust=-.5) +
scale_y_continuous(limits=c(0,1),labels = scales::percent) +
ylab("Percent of Sample") +
facet_grid(~gender)

但是,我还想在每个图表上以并排条形形式显示“审计”组和“信用”组之间的差异。然而,当我将“fill=category”添加到 ggplot 的美学中时,没有任何变化:

StudentData %>% ggplot(., aes(x=degree, group=gender, fill=category)) + 
geom_bar(aes(y=..prop..), stat="count", position=position_dodge()) +
geom_text(aes(label=scales::percent(round(..prop..,2)),
y=..prop..), stat="count", vjust=-.5) +
scale_y_continuous(limits=c(0,1),labels = scales::percent) +
ylab("Percent of Sample") +
facet_grid(~gender)

我意识到这通常是使用geom_bar(stat="identity",position=position_dodge())来完成的,但是当我更改stat="identity"时,出现以下错误消息:

FUN(X[[i]], ...) 中的错误:未找到对象“prop”

知道如何制作构面图,使用特殊字符(例如 ..prop..)并向 ggplot2 图中添加另一个填充吗?

最佳答案

您可以创建必要的四个(而不是两个),如下所示:

StudentData %>% 
ggplot(., aes(x=degree, group=interaction(gender, category), fill=category)) +
geom_bar(aes(y=..prop..), stat="count", position=position_dodge()) +
geom_text(aes(label=scales::percent(round(..prop..,2)),
y=..prop..), stat="count", vjust=-.5, position=position_dodge(.9)) +
scale_y_continuous(limits=c(0,1),labels = scales::percent) +
ylab("Percent of Sample") +
facet_grid(~gender)

enter image description here

关于r - ggplot2 使用 ...prop... 并按另一个类别对条形图进行分组时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48086575/

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