ggplot堆积条形图在每列顶部添加多个标签

问题描述 投票:0回答:1

我正在尝试创建一个堆积的条形图,由于我的一些值非常小,而不是将标签放在每个条形图内。我想知道是否可以将每个值放在具有最高值的栏顶部并堆叠在其下方。然后,文本颜色将与条形颜色对应。我在y=val+1中尝试了geom_text(),但是这也会增加最大值。这不是我想要的。

x<-c(1,2,3,4,5)
y1<-c(0.5,4,2,9,16)
y2<-c(.25,3,10,0.02,7)
y3<-c(2,2,16,0.023,4.5)
df1<-data.frame(x=x,v1=y1,stringsAsFactors=FALSE)
df2<-data.frame(x=x,v2=y2,stringsAsFactors=FALSE)
df3<-data.frame(x=x,v3=y3,stringsAsFactors=FALSE)
pClass<-left_join(df1,df2,by="x")
pClass<-left_join(pClass,df3,by="x")
pClass<-pClass%>%pivot_longer(-x,names_to="var",values_to="val")%>%mutate(val=as.numeric(val))

ggplot(pClass,aes(x=x,y=val,fill=var))+geom_bar(position="stack",stat="identity")+
  geom_text(aes(x=x,label = prettyNum(as.numeric(val),digits = 3),y=val),size = 3,fontface="bold")

t

大约我会想要这样的东西:每个小节我都会在小节的顶部有3个值。enter image description here

r ggplot2 geom-bar stacked-chart geom-text
1个回答
0
投票

很难在小类别中显示一些标签,但是应该这样做:

ggplot(pClass,aes(x=x,y=val,fill=var, label=prettyNum(as.numeric(val),digits = 3)))+
  geom_bar(stat="identity")+
  geom_text(position="stack")

或给定较小的数据间隔,请不要堆叠条形图:

ggplot(Data, aes(x = Year, y = Frequency, fill = Category)) +
  geom_bar(stat="identity", position=position_dodge())+
  geom_text(aes(label=Frequency), position=position_dodge(0.9), vjust=0)
© www.soinside.com 2019 - 2024. All rights reserved.