想要使用另一个df为R中的错误栏与barplot

时间:2014-03-15 21:15:24

标签: r plot

我有这两个df。

x;

     experiment expression
1    HC         50
2    LC         4
3    HR         10
4    LR         2

y;
 HC_conf_lo HC_conf_hi LC_conf_lo LC_conf_hi    HR_conf_lo HR_conf_hi LR_conf_lo LR_conf_hi
1             63.3293             109.925            2.33971            5.26642              8.8504             16.7707           0.124013           0.434046

我想用df:y绘制低和高conf。点。输出应该是带有错误栏的条形图。有人能告诉我使用基本包中的行怎么做?

1 个答案:

答案 0 :(得分:1)

所以不知道你的数据是否有效。假设置信区间有效。 您可以采取以下措施来获取数据中的错误栏

#First reading in your data
x<-read.table("x.txt", header=T)
y<=read.table("y.txt", header =T)
#reshaping y to merge it with x
y.wide <-data.frame(matrix(t(y),ncol=2,byrow=T)) #Transpose Y, 
#matrix with 2 cols, byrow,
#so we get the lo and hi values in one row

names(y.wide)<-c("lo","hi") #name the columns in y.wide
#Make a data.frame of x and y.wide
xy.df <-data.frame(x,y.wide) # this will be used for plotting the error bars
#make a matrix for using with barplot (barplot takes only matrix or table)
xy<-as.matrix(cbind(expression=x$expression,y.wide))
rownames(xy)<-x$experiment #rownames, so barplot can label the bars
#Get ylimts for barplot
ylimits <-range(range(xy$expression), range(xy$lo), range(xy$hi))
barx <-barplot(xy[,1],ylim=c(0,ylimits[2])) #get the x co-ords of the bars
barplot(xy[,1],ylim=c(0,ylimits[2]),main = "barplot of Expression with ? bars")
# ? as don't know if it's C.I, or what
with(xy.df, arrows(barx,expression,barx,lo,angle=90, code=1,length=0.1))
with(xy.df, arrows(barx,expression,barx,hi,angle=90, code=1,length=0.1))

结果图 enter image description here

但看起来不对,这是因为你的表达式值不会介于lo和hi值之间。

下面有黑客攻击,

barplot(xy[,1],ylim=c(0,ylimits[2]),main = "barplot of Expression with ? bars")
with(xy.df, arrows(barx,lo,barx,hi,angle=90, code=2,length=0.1))
with(xy.df, arrows(barx,hi,barx,lo,angle=90, code=2,length=0.1))

结果图enter image description here

请仔细查看arrows这两个电话,您将看到我是如何实现这一目标的。 我建议您仔细检查计算结果。

使用ggplot2可以轻松实现这一点。查看此页面以获取示例和代码 http://docs.ggplot2.org/0.9.3.1/geom_errorbar.html