我的数据集中的列如下所示:
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
这样的东西,但它们都没有用。谢谢你的帮助!
答案 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()
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()
你也可以考虑
ggplot(data = dat, aes(x = teacher, fill = student)) +
geom_histogram(alpha= .5, position = 'identity')
看起来像是:
如果你不知道,第二张图只是“覆盖”条形而不是叠加它们。
我在ggplot
并不擅长,但希望这会有所帮助。