R 星条图

R 星条图,r,plot,bar-chart,R,Plot,Bar Chart,我试着做一个简单的条形图,首先,区分两组,比如说基于性别,男性或女性,然后在统计数据之后,对于每个样本/个体,有一个p值,显著或不显著。我知道如何对男性和女性之间的条形图进行颜色编码,但我希望R能自动在P值小于0.05的每个样本/个体上方加上一颗星 我目前正在使用简单的barplot(x)函数 我试着四处寻找答案,但还没有找到任何答案 下面是指向我的示例数据集的链接: [url]=http://www.divshare.com/download/22797284-187]DivShare文件-t

我试着做一个简单的条形图,首先,区分两组,比如说基于性别,男性或女性,然后在统计数据之后,对于每个样本/个体,有一个p值,显著或不显著。我知道如何对男性和女性之间的条形图进行颜色编码,但我希望R能自动在P值小于0.05的每个样本/个体上方加上一颗星

我目前正在使用简单的
barplot(x)
函数

我试着四处寻找答案,但还没有找到任何答案

下面是指向我的示例数据集的链接:

[url]=http://www.divshare.com/download/22797284-187]DivShare文件-test.csv[/url]

我想把时间放在y轴上,用色码标记条来区分男性和女性,然后对于任何一组中显著性为1的个体,在相应的条上加一颗星


感谢您提前提出建议。

我将您的数据弄乱了一点,以使其更友好:

## dput(read.csv("barcharttest.csv"))
x <- structure(list(ID = 1:7,
  sex = structure(c(1L, 1L, 1L, 2L, 2L, 1L, 2L), .Label = c("female", "male"),
   class = "factor"),
  val = c(309L, 192L, 384L, 27L, 28L, 245L, 183L),
  stat = structure(c(1L, 2L, 2L, 1L, 2L, 1L, 1L), .Label = c("NS", "sig"),
    class = "factor")),
               .Names = c("ID", "sex", "val", "stat"),
               class = "data.frame", row.names = c(NA, -7L))
现在,情节如下:

sexcols <- c("pink","blue")
## png("barplot.png")  ## for output graph
par(las=1,bty="l")  ## I prefer these settings; see ?par
b <- with(x,barplot(val,col=sexcols[sex])) ## b saves x coords of bars
legend("topright",levels(x$sex),fill=sexcols,bty="n")
## use xpd=NA to make sure that star on tallest bar doesn't get clipped;
##   pos=3 puts the text above the (x,y) location specified
text(b,x$val,ifelse(x$stat=="sig","*",""),pos=3,cex=2,xpd=NA)
axis(side=1,at=b,label=x$ID)
## dev.off()

sexcols您能否使用
dput
提供您的数据(或类似玩具数据)的可复制示例?此外,每个条形图是单个还是一组?如果是一个团体,那么把一颗星星放在“个人之上”是什么意思?您想要的图形是什么样子还不清楚。(同样,展示一个没有星星的可复制的图表示例会有所帮助)我们中的一些人正在等待原始数据,因为我们担心个人的“p值”可能不是一个统计意义上的概念。我们想教你如何钓鱼,但担心你可能会钓到你的一个船夫。你添加了数据集,但仍然没有可复制的R代码示例。非常感谢!这正是我需要的。
sexcols <- c("pink","blue")
## png("barplot.png")  ## for output graph
par(las=1,bty="l")  ## I prefer these settings; see ?par
b <- with(x,barplot(val,col=sexcols[sex])) ## b saves x coords of bars
legend("topright",levels(x$sex),fill=sexcols,bty="n")
## use xpd=NA to make sure that star on tallest bar doesn't get clipped;
##   pos=3 puts the text above the (x,y) location specified
text(b,x$val,ifelse(x$stat=="sig","*",""),pos=3,cex=2,xpd=NA)
axis(side=1,at=b,label=x$ID)
## dev.off()