在 R 中绘制二进制列总和,然后用分类变量的比率覆盖这些列

Graphing binary column sums in R, and then overlay those columns with a ratio of categorical variables

我正在尝试在 R 中绘制定性政策分析数据的图表。我的数据库中每项政策都有一行,然后是二进制变量的列,如果满足该条件,则条件编码为“1”。最后,每一行还包含一列,用于说明该政策是强制性的、自愿性的还是部分政策。

我想创建一个对列求和的条形图,然后根据强制性、自愿性或部分总和的百分比为条形着色。

理想的结果是创建一个如下图所示的条形图,但根据强制性、自愿性或部分政策的比例用颜色编码

以下是一些相同格式的示例数据:

df<- data.frame(ID=c(1,2,3,4,5,6),
            policy=c("Policy A", "Policy B", "Policy C", "Policy D", 
            "Policy E","Policy F" ),
            Data_collection= c(1, 0, 0, 1, 1, 0),
            Handling_release= c(0, 1, 0, 1, 0, 1),
            Gear_modification= c(1, 0, 0, 1, 1, 0),
            Stength=c("M", "V", "M", "P", "P", "M"),
            stringsAsFactors=FALSE)

看来您真的需要将数据重塑为合适的整洁格式,以便更轻松地绘图。例如你可以做

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

df %>% 
  pivot_longer(Data_collection:Gear_modification) %>% 
  filter(value==1) %>% 
  ggplot(aes(name, fill=Stength)) +
  geom_bar()

对于提供的样本数据,这给出了

要在顶部添加总数,请参阅此现有问题: