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

问题描述 投票:1回答:1

我正在尝试在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)
r charts binary categorical-data graphing
1个回答
0
投票

看来,您确实确实需要将数据重整为适当的整齐格式,以使打印更加容易。例如,您可以这样做

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

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

对于提供的示例数据,此给出

stacked bar plot

要在顶部添加总数,请参见此现有问题:draw the sum value above the stacked bar in ggplot2

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