我希望在条形图中添加标签,并省略0。现在它读起来很乱。我也希望标签出现在酒吧上,并有标签的位置上或以上的酒吧。我已经能够调整标签的高度,但是当我绘制一个比率时,y轴上的比例可能会发生变化,这是一个挑战。这是目前为止的图表
A <- c('A','B','C','D','E')
HQ <- c(0,0,0.2,0,0.5)
Category <-c(1,2,1,1,2)
HIData <-data.frame(A,HQ,Category)
Ainorder<- c('B','C','D','A','E')
Listofcolors <- c("A"="red","B"="red","C"="blue","D"="red","E"="blue")
HIPlot <- ggplot(data=HIData, aes(x=factor(A,level=Ainorder),y=HQ))+ geom_col()
HIPlot <- HIPlot + theme(panel.grid.major=element_blank(),panel.grid.minor=element_blank())
HIPlot <- HIPlot + theme(axis.text.x = element_text(angle=90,vjust=0.5, color = Listofcolors),axis.text.y=element_text(angle=0,vjust=0.5,color = "black"))
HIPlot <- HIPlot + ylab("HQ")+xlab("")+ labs(title=paste0(first("HQ for "),HIData$ID))
HIPlot <- HIPlot + aes(fill=Category)
HIPlot <- HIPlot + geom_text(data=HIData, aes(label=HQ), angle=90)
HIPlot

发布于 2021-08-13 19:21:56
要使文本仅在>0上显示,我们可以对该层的数据进行子集。为了让它清晰地显示在条形图的上方,我们可以使用hjust (对齐是在角度旋转之前计算的,所以这里的up-down是由hjust驱动的)。为了给这些标签腾出空间,我们可以调整y刻度,在顶部增加更多的填充(这里是15%,而不是默认的5% )。
HIData$A = factor(HIData$A, level = Ainorder)
ggplot(data=HIData, aes(x=A, y=HQ, fill = Category)) +
geom_col() +
geom_text(data=subset(HIData, HQ > 0), aes(label=HQ), angle=90, hjust = -0.2) +
scale_y_continuous(expand = expansion(mult = c(0.05, 0.15))) +
labs(title=paste0("HQ for ID TBD"), y = "HQ", x = NULL) +
theme(panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
axis.text.x = element_text(angle=90,vjust=0.5, color = Listofcolors),
axis.text.y=element_text(angle=0,vjust=0.5,color = "black"))

发布于 2021-08-13 19:14:27
在单个geom_text调用中设置您的数据的子集。
ggplot(data=HIData, aes(x=factor(A,level=Ainorder),y=HQ)) +
geom_col() +
theme(panel.grid.major=element_blank(),panel.grid.minor=element_blank()) +
theme(axis.text.x = element_text(angle=90,vjust=0.5, color = Listofcolors),axis.text.y=element_text(angle=0,vjust=0.5,color = "black")) +
ylab("HQ") + xlab("") + labs(title=paste0(first("HQ for "),HIData$ID)) +
aes(fill=Category) +
geom_text(data=subset(HIData, HQ > 0), aes(label=HQ), angle=90)
# Warning: Vectorized input to `element_text()` is not officially supported.
# Results may be unexpected or may change in future versions of ggplot2.

https://stackoverflow.com/questions/68777182
复制相似问题