如何在条形图中放置星号更容易?

时间:2015-05-22 13:49:23

标签: r bar-chart

我想在我的分组条形图(R base)中放置星号,以指示配对比较的显着位置。我知道如何使用points命令放置这些星星。但是,从我阅读的帖子看来,似乎需要手动找到正确的坐标(例如,组I:x = 0.635,y = 26,请参阅下面的代码)。如果需要为所有重要对找到它,这将花费相当长的时间。

所以我的问题是:是否有更简单的方法来找到与中间和旁边配对条相对应的坐标?我宁愿在基础绘图系统中这样做,但也欢迎ggplot答案。非常感谢你提前!

数据示例

set.seed(123)
dat<-matrix(runif(32, min = 0.5, max = 1), nrow=2, ncol=16)
colnames(dat)<-c(LETTERS[1:16])

par(mar=c(2,4,2,2)) 
mp<-barplot(dat, col=c("blue","red"), beside=TRUE, horiz=TRUE, xpd=FALSE, axes=FALSE, axisnames=TRUE, cex.names=0.8, las=2, xlim=c(0.5,1.0), main="Data Example") 

axis(1, at=seq(0.5,1.0, by=0.1))
axis(2, at=mp, labels=FALSE, tick=FALSE)

points(x=0.635, y=26, pch="*", cex=2) #sign position at I

enter image description here

1 个答案:

答案 0 :(得分:2)

假设您有一个向量,告诉您哪些对是重要的。例如:

sign <- rep(TRUE, 16) ; sign[c(5, 7, 13:14)] <- FALSE

你已经知道字母的y坐标:

colMeans(mp)

所以你可以定义星号的y坐标:

ord_sign <- colMeans(mp)[sign]

对于x坐标,您可以将它们放置在距离最大值的右侧0.01点的位置:

abs_sign <- apply(dat, 2, max)[sign] + 0.01

然后你可以立刻画出所有的星号:

points(x=abs_sign, y=ord_sign, pch="*", cex=2)

enter image description here