我认为堆叠列是ggplot2下的默认操作,但这似乎不适用于我的情节。我试图采取两个向量(可能或可能不具有相同的长度)并将它们绘制在与堆积条相同的图中。这是一个简单的例子:
z1<-c(500, 300, 200, 100)
z2<-c(800, 100, 50)
names(z1)<-c("a", "b", "c", "d")
names(z2)<-c("a", "c", "e")
z1<-as.data.frame(z1)
z2<-as.data.frame(z2)
colnames(z1)<-"total"
colnames(z2)<-"total"
ggplot()+
labs(x="", y="") +
theme_bw() + theme(panel.border = element_blank(), panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black")) +
scale_y_continuous(labels=format_si()) +
ggtitle("Test") +
geom_bar(data=z1, aes(x=rownames(z1), y=total),position="identity",stat="identity",
fill=rgb(red=200, green=0, blue=50, maxColorValue = 255)) +
geom_bar(data=z2, aes(x=rownames(z2), y=total),position="identity",stat="identity",
fill=rgb(red=0, green=200, blue=50, maxColorValue = 255))
给我:
如您所见,a和c元素彼此相对而不是堆叠。
答案 0 :(得分:1)
这种类型的数据组织可以更好地运作:
z1<-c(500, 300, 200, 100)
z2<-c(800, 100, 50)
names(z1)<-c("a", "b", "c", "d")
names(z2)<-c("a", "c", "e")
z1<-as.data.frame(z1)
z2<-as.data.frame(z2)
colnames(z1)<-"total"
colnames(z2)<-"total"
将组(z1,z2)添加到数据
z1$Group <- "z1"
z2$Group <- "z2"
将rownames添加为变量列
z1$rnm <- rownames(z1)
z2$rnm <- rownames(z2)
将这些绑定在一起
zt <- rbind(z1, z2)
简化的情节
ggplot(zt, aes(x=rnm, y=total, fill=Group)) +
geom_bar(stat="identity")
在这里,你需要了解美学以及ggplot2最有效的数据类型。对每个组/数据进行单独调用会忽略具有多个级别的因子变量的功效。例如,在示例中尝试交换Group
rnm
。
答案 1 :(得分:1)
试试这个:
df <- rbind(cbind(z1, type=rownames(z1), data='z1'), cbind(z2, type=rownames(z2), data='z2'))
ggplot(df, aes(type, total, fill=data)) +
geom_bar(stat="identity") +
scale_fill_manual(values=c(rgb(red=200, green=0, blue=50, maxColorValue = 255), rgb(red=0, green=200, blue=50, maxColorValue = 255)))