分类/二进制数据之和的直方图

时间:2019-08-16 14:19:28

标签: r ggplot2 histogram

我想要一种图形化且有吸引力的方式来表示二进制数据的列总和,而不是表格格式。我似乎无法使它正常工作,尽管有人会认为这是一种铺垫。

数据看起来像这样(我尝试创建一个可重现的示例,但无法获得用0和1填充的代码)。

G1 G2 G3 G4
1  0  0  1
0  1  1  1
1  1  0  0
0  1  0  1

我只想累加(累加)每列中的1,在x轴上显示组名,在y轴上显示计数(总和),并使条形漂亮。我已经尝试过这里的所有解决方案,而很多都没有。

2 个答案:

答案 0 :(得分:3)

由于值是二进制的,因此只需在colSums中执行base R,然后使用barplot

barplot(colSums(df1), col = c("red", "blue", "green", "yellow"))

enter image description here

数据

df1 <- structure(list(G1 = c(1L, 0L, 1L, 0L), G2 = c(0L, 1L, 1L, 1L), 
    G3 = c(0L, 1L, 0L, 0L), G4 = c(1L, 1L, 0L, 1L)), class = "data.frame", row.names = c(NA, 
-4L))

答案 1 :(得分:3)

一种tidyverse方法:

 library(tidyverse)

df %>% 
  gather(key,val) %>% 
  group_by(key) %>% 
  summarise(Sum=sum(val)) %>% 
  ggplot(aes(key,Sum,fill=key))+geom_col()

或@akrun建议:

df %>% summarise_all(sum)
 %>% gather %>%
 ggplot(., aes(x = key, y = value)) + 
geom_bar(stat = 'identity')

结果: enter image description here