我设法使用ggplot2创建堆积条形图,但其中一个数据值为0.有没有办法显示除0以外的所有其他数据值?
dat <- data.frame(matrix(NA, ncol=3, nrow=21))
names(dat) <- c("Var1", "Var2", "Freq")
dat$Var1 <- c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7)
dat$Var2 <- rep(letters[1:7],3)
dat$Freq <- c(3,11,1,5,9,4,1,5,4,0,7,2,5,2,3,11,11,15,5,10,10)
dat <- ddply(dat, .(Var1), transform, pos = cumsum(Freq)-0.5*Freq) ## pos is to place data values at the mid point.
ggplot(dat, aes(x=factor(Var1), y=Freq)) +
geom_bar(stat="identity", aes(fill = Var2)) +
geom_text(aes(label=Freq, y = pos), size=3)
编辑:提供可重现的数据。
答案 0 :(得分:8)
如果您不想修改原始数据框以用NA替换0,则可以使用geom_text()
内的子集仅使用不等于0的值。
ggplot(dat, aes(x=factor(Var1), y=Freq)) +
geom_bar(stat="identity", aes(fill = Var2)) +
geom_text(data=subset(dat,Freq != 0),aes(label=Freq, y = pos), size=3)