Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使用ggplot2在堆叠条形图中不显示值0_R_Ggplot2 - Fatal编程技术网

R 如何使用ggplot2在堆叠条形图中不显示值0

R 如何使用ggplot2在堆叠条形图中不显示值0,r,ggplot2,R,Ggplot2,我已经使用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$Fre

我已经使用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)

dat如果不想修改原始数据框以将0替换为NA,可以使用
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)

您应该给出一个可重复的示例。不清楚哪个数据值为空:Freq还是pos?黑暗中的一个镜头:
Var1
是一个因素,您已经做了一些事情删除了其中一个级别。调用
dat如果您先用NA替换零值会发生什么情况,例如
mydata[mydata==0]对不起,伙计们。对Stackoverflow来说是相当新的。我只是提供了一个可复制的数据@卡尔·维特霍夫,你的建议奏效了。我会这样做作为一个解决办法,但我觉得应该有另一种方法来做到这一点。谢谢