如何获得虚拟变量的堆积条形图

时间:2013-11-16 21:05:48

标签: r

我的数据集中的列如下所示:

teacher student  
 y        n  
 y        n  
 y        y  
 y        n  
 y        n  
 n        n  
 n        n   
 n        y  
 y        y  
 n        y  
 y        n  

我用过

barchart(data$teacher) 

为老师的图表,它显示了两个单独栏中y和n的频率,但现在我想显示两个变量的y和n堆叠,因此每个变量一个条形码。我尝试了很多像chart.StackedBar这样的东西,但它们都没有用。谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

阅读手册页,兄弟。这就是你想要的:

barplot(matrix(c(table(df$teacher), table(df$student)), ncol=2), 
        col=c('red', 'blue'),  
        names.arg=c('teacher', 'student'), 
        legend.text=c('y', 'n'))

答案 1 :(得分:0)

编辑:根据您的评论,这是您要找的吗?

library(reshape2)
tmp <- melt(dat, id.vars = NULL)
names(tmp) <- c('Occupation', 'ID')

ggplot(data = tmp, aes(x = Occupation, fill= ID)) + geom_histogram()

enter image description here

ORIGINAL:

我使用ggplot接近了这种类型的图表。这是一个简单的例子:

library(ggplot2)
set.seed(1618)
dat <- data.frame(teacher = sample(c('y','n'),10,replace=T),
                  student = sample(c('y','n'),10,replace=T))

ggplot(data = dat, aes(x = teacher, fill = student)) + geom_histogram()

enter image description here

你也可以考虑

ggplot(data = dat, aes(x = teacher, fill = student)) + 
geom_histogram(alpha= .5, position = 'identity')

看起来像是:

enter image description here

如果你不知道,第二张图只是“覆盖”条形而不是叠加它们。

我在ggplot并不擅长,但希望这会有所帮助。