ggplot,包含两个测量变量和一个因子的误差线

时间:2013-12-30 19:31:06

标签: r ggplot2 reshape2

我知道如何创建带有误差条的常规绘图,例如,一个因子(例如experiment)和一个度量(例如quality)。我首先使用给定on this sitesummarySE函数汇总数据以获得均值和CI。例如:

   hrc_id experiment  N  quality        sd         se         ci
        0      FB_IS 77 3.584416 0.6757189 0.07700532 0.15336938
        0     FB_ACR 77 3.779221 0.6614055 0.07537416 0.15012064
        1      FB_IS 77 3.038961 0.7854191 0.08950681 0.17826826
        1     FB_ACR 77 3.129870 0.8483831 0.09668223 0.19255935
...

这样我可以绘图:

ggplot(d, aes(hrc_id, quality), quality, color = experiment)) + 
    geom_point(position = position_dodge(width = .5)) +
    geom_errorbar(aes(ymin = quality - ci, ymax = quality + ci), width = .5, position = "dodge")


但是,现在我必须对两个测量做同样的事情 - 不只是quality,还有confidence。例如,我的数据可能如下所示:

hrc_id confidence confidence_ci  quality quality_ci
     0   3.573718    0.02068321 4.576923 0.02864818
     1   3.403846    0.03193104 1.658120 0.04441434
    10   3.160256    0.02520483 3.038462 0.04476492
...

我如何针对每个confidence绘制confidence_ciquality}和quality_ci(与hrc_id)相邻的情节?{ / p>

我认为我可以melt数据框,以便confidencequality成为测量变量,但之后我会丢失属于它们的CI值。

2 个答案:

答案 0 :(得分:1)

你的数据框最终应该是这样的(融化可能是正确使用的工具,但我现在不记得语法):

hrc_id measurment value ci  
 0   confidence 3.573718    0.02068321 
 0   quality    4.576923    0.02864818

然后你可以使用:

进行绘图
p = ggplot(d, aes(x = hrc_id, y = value, color = measurment))
p = p + geom_errorbar (aes(ymin = value - ci, ymax = value + ci))
p = p + geom_point(position = position_dodge(width = .5))
p

答案 1 :(得分:1)

您可以使用reshape(...)在一个步骤中将数据框转换为具有分组列的长格式。假设您的数据框为df

gg <- reshape(df,idvar="hrc_id",               # idvar: identifies cases
              times=c("confidence","quality"), # group of columns to be reshaped
              timevar="measurement",           # column name to use for grouping vars
              varying=2:5,                     # columns are to be reshaped
              v.names=c("value","value.ci"),   # column names for reshaped values
              direction="long")                # convert to long format
gg
#               hrc_id measurement    value   value.ci
# 0.confidence       0  confidence 3.573718 0.02068321
# 1.confidence       1  confidence 3.403846 0.03193104
# 10.confidence     10  confidence 3.160256 0.02520483
# 0.quality          0     quality 4.576923 0.02864818
# 1.quality          1     quality 1.658120 0.04441434
# 10.quality        10     quality 3.038462 0.04476492

据我所知,您无法使用melt(...)执行此操作 - 您必须使用评论中提到的rbind方法。