Ric*_*ton 2 r ggplot2 stacked-chart geom-text
我正在尝试制作带有文本标签的堆积条形图,这是一些示例数据/代码:
library(reshape2)
ConstitutiveHet <- c(7,13)
Enhancer <- c(12,6)
FacultativeHet <- c(25,39)
LowConfidence <- c(3,4)
Promoter <- c(5,4)
Quiescent <- c(69,59)
RegPermissive <- c(23,18)
Transcribed <- c(12,11)
Bivalent <- c(6,22)
group <- c("all","GWS")
meanComb <- data.frame(ConstitutiveHet,Enhancer,LowConfidence,Promoter,Quiescent,RegPermissive,Transcribed,Bivalent,group)
meanCombM <- melt(meanComb,id.vars = "group")
ggplot(meanCombM,aes(group,value,label=value)) +
geom_col(aes(fill=variable))+
geom_text(position = "stack")+
coord_flip()
Run Code Online (Sandbox Code Playgroud)
文本标签出现乱序,它们似乎是其预期顺序的镜像。(无论是否使用 ,您都会遇到相同的问题coord_flip())
一个海报在这里有类似的问题: ggplot2:将有序类别标签添加到堆积条形图
对他们帖子的回答建议颠倒组中值的顺序,我尝试过(见下文),结果图上的顺序不是我能够弄清楚的。此外,这种方法似乎很笨拙,这里有错误还是我遗漏了什么?
x <- c(rev(meanCombM[meanCombM$group=="GWS",]$value),rev(meanCombM[meanCombM$group=="all",]$value))
ggplot(meanCombM,aes(group,value,label=x)) +
geom_col(aes(fill=variable))+
geom_text(position = "stack")+
coord_flip()
Run Code Online (Sandbox Code Playgroud)
ggplot(meanCombM,aes(group,value,label=value)) +
geom_col(aes(fill=variable))+
geom_text(aes(group=variable),position = position_stack(vjust = 0.5))+
coord_flip()
Run Code Online (Sandbox Code Playgroud)
Hadley 在 ggplot2 的 git 存储库中的这个问题中回答了一个类似于我自己的问题:https : //github.com/tidyverse/ggplot2/issues/1972
显然默认分组行为(见:
http://ggplot2.tidyverse.org/reference/aes_group_order.html)不会将数据正确这里未指定分区group审美,应映射到相同的值fill在geom_col在这个例子。