我想在我的分组条形图(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
答案 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)