【发布时间】:2016-10-18 18:55:34
【问题描述】:
我有这个长格式的数据框“dat”,该图使用折线图显示时间序列 a 和 b,带有上下误差线,但我想改用 geom_error()。当 dat 采用这种格式时,如何将绘图更改为使用 geom_error()?
问题是 geom_error 需要一个 ymin 和 ymax
geom_errorbar(aes(ymax = Upper ,ymin = Lower), width = .25)
但是当数据是长格式时,ymin 和 max 在 4 个时间序列中; upper_a、lower_a、upper_b 和 lower_b
dat = data.frame(x= c(1,2,1,2,1,2,1,2,1,2,1,2),y = c(1,2,5,6,2,3,0,1,6,7,4,5), group = c("a","a","b","b","upper_a","upper_a","lower_a","lower_a",
"upper_b","upper_b","lower_b","lower_b"))
ggplot(data=dat , aes(x=as.factor(x), y=y,fill=group, group= group,
color = group )) +
geom_line() + geom_point()+
scale_fill_manual( name = "Metric", labels = c(
a = "a",
b = "b",
upper_a = "upper a",
lower_a = "lower a",
upper_b ="upper b",
lower_b= "lower b"),
values =c(
a = "red",
b = "blue",
upper_a = "lightpink",
lower_a = "lightpink",
upper_b ="lightsteelblue",
lower_b= "lightsteelblue")
) +
scale_color_manual( name = "Metric", labels = c(
a = "a",
b = "b",
upper_a = "upper a",
lower_a = "lower a",
upper_b ="upper b",
lower_b= "lower b"),
values =c(
a = "red",
b = "blue",
upper_a = "lightpink",
lower_a = "lightpink",
upper_b ="lightsteelblue",
lower_b= "lightsteelblue")
)
【问题讨论】:
-
虽然您的数据很长,但它并不是一个nice 长。您的
group列同时编码了a/b分组和upper/lower/regular分组 - jdobres 的回答很好地将这些分组分成不同的列,以便可以适当地使用它们。