我想使用ggplot创建一个堆积条形图,并向其添加(居中的)标签:当值太低时,我不想显示标签。
df<-data.frame(x=unlist(strsplit("AAAABBBB","")),
z=unlist(strsplit("ABCDABCD","")),
y=c(40,5,30,10,50,60,5, 40))
# this works fine
library(ggplot2)
ggplot(df, aes(x=x, y=y, fill = z)) + geom_bar(stat="identity") +
geom_text(data = df, aes(x=x, y=y, label = y), position = position_stack(vjust=0.5))
但是当我像下面这样过滤值时,它也会改变每个标签的位置。这对于散点图来说是可以的,但由于定位是基于堆叠值的,因此标签显示得太低。#don't show values 5 or less
ggplot(df, aes(x=x, y=y, fill = z)) + geom_bar(stat="identity") +
geom_text(data = df[df$y > 5,], aes(x=x, y=y, label = y), position =
position_stack(vjust=0.5))
aes(label = ifelse(y > 5, y, ""))
。 - pogibas