如何使条形图中星号的放置更容易?
How to make the placement of asterisks in a barplot easier?
我想在我的分组条形图(R 基)中放置星号,以指示配对比较的显着差异。我知道如何使用 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
假设您有一个向量告诉您哪些对很重要。例如:
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)
我想在我的分组条形图(R 基)中放置星号,以指示配对比较的显着差异。我知道如何使用 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
假设您有一个向量告诉您哪些对很重要。例如:
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)