我知道如何创建带有误差条的常规绘图,例如,一个因子(例如experiment
)和一个度量(例如quality
)。我首先使用给定on this site的summarySE
函数汇总数据以获得均值和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_ci
(quality
}和quality_ci
(与hrc_id
)相邻的情节?{ / p>
我认为我可以melt
数据框,以便confidence
和quality
成为测量变量,但之后我会丢失属于它们的CI值。
答案 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
方法。