gpt4 book ai didi

r - 二进制列总和成ggplot中的百分比堆积条形图

转载 作者:行者123 更新时间:2023-12-04 10:31:55 26 4
gpt4 key购买 nike

我已经尝试了一切来转换 bar chart I made here从 y 轴上的 COUNT 到 y 轴上的 PERCENT OF TOTAL (N=142),但似乎无法弄清楚。我希望 x 轴是“Spatial_Management”、“Landing_ban”和“Bycatch_rentention”列,y 轴是该列值为 1 的策略的百分比。填充为“力量”。我想我需要事先对我的数据进行非常简单的编辑,我在下面尝试过,但它不起作用。

编辑:示例数据框:

    df<- data.frame(policy=c("Policy A", "Policy B", "Policy C", "Policy D", 
"Policy E","Policy F" ),
Spatial_Management= c(0,1,1,0, 0,1),
Landing_ban= c(0,1,1,0, 0,1),
Bycatch_Retention= c(0,1,1,0, 0,1),
Strength=c("M", "V", "M", "P", "P", "M"),
stringsAsFactors=FALSE)

我目前的数字代码是:
df %>% 
pivot_longer(Spatial_management:Bycatch_Retention)
filter(value==1) %>%
ggplot(aes(x=factor(name, level=level_order), fill = factor(Strength)) +
y = (..count..)/sum(..count..)) +
geom_bar()+
stat_bin(geom = "text",
aes(label = paste(round((..count..)/sum(..count..)*100), "%")),
vjust = 5) +
scale_y_continuous(labels = percent)

我知道这很简单,但希望有任何帮助!!!

最佳答案

在这里,您需要将数据框 reshape 为更长的格式,然后计算值的数量除以策略的数量(这里它等于数据框的行数):

library(tidyr)
library(dplyr)
library(ggplot2)
df %>% pivot_longer(-c(policy, Strength), names_to = "var", values_to = "val") %>%
group_by(Strength, var) %>%
summarise(Val = sum(val)/ nrow(df)) %>%
ggplot(aes(x = var, y = Val, fill = Strength))+
geom_col()+
scale_y_continuous(labels = percent)

enter image description here

关于r - 二进制列总和成ggplot中的百分比堆积条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60382162/

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