我有这样的数据:
data <- data.frame(Comp = factor(rep(2003:2004, each = 8)),
Cat = rep(letters[1:4], 4),
Type = rep(c('Free','Used'), each = 4),
Count = trunc(rnorm(16,30,2)))
我需要barplot
beside = TRUE
和beside = FALSE
(TRUE
Cat
和Comp
以及FALSE = Type
之类的内容})。
根据这些数据,它将生成一个包含8列的图(Comp
与Cat
(Comp = 2003 + Cat = A ; Comp = 2003 + Cat = B ; ... ; Comp = 2004 + Cat = D
)的交互),每个列都有2个堆叠列({{{{ 1}}(Type
和Free
))Used
变量。
任何提示我怎么能做这种情节?我试图在EXCEL中做一个例子,但我也失败了。
答案 0 :(得分:4)
在lattice
:
barchart(Count~interaction(Cat,Comp),groups=Type,data=data,auto.key=T,stack=T)
另一种分组方式,来自评论:
barchart(Count~Cat|factor(Comp),groups=Type,data=data,auto.key=T,stack=T)
答案 1 :(得分:4)
同样在ggplot2
:
ggplot(data, aes(x=interaction(Cat, Comp), y=Count, fill=Type)) +
geom_bar(position='stack', stat='identity')
要对其他变量(或两个)进行分组,您可以使用facet_wrap
或facet_grid
。
ggplot(data, aes(x=Cat, y=Count, fill=Type)) +
geom_bar(position='stack', stat='identity') +
facet_wrap( ~ Comp)