geom_bar 和给定数据的误差线
geom_bar and errorbars for given data
我想要 this data
的条和误差条
我设法获得了酒吧:
ggplot(FCDreach_global_mod, aes(x = as.factor(t3-t2), y = 1-value, fill=as.factor(t2-t1) )) +
geom_bar(stat = "identity" )
但是我不知道如何绘制误差线。我尝试了 geom_errorbar()
但无法正常工作。
绘制线图时我会使用:
stat_summary(fun.data=mean_cl_normal, geom="errorbar")
但这似乎不适用于 geom_bar()
我试过这个:
ggplot(FCDreach_global_mod, aes(x = as.factor(t3-t2), y = 1-value, fill=as.factor(t2-t1) ) ) +
stat_summary(fun.y=mean,geom="bar")+
stat_summary(fun.data=mean_cl_normal,geom="errorbar", width=0.5)
y
上的休息与 geom_bar(stat = "identity" )
上的休息看起来完全不同。条形的大小相同,但 y 尺度发生了一些奇怪的事情。
geom_bar:
stat_summary:
编辑:期望的输出是在条形图中显示该图的等价物,当然不包括 x
轴并将 t3-t2
放在 x
上
我通过以下方式获得:
ggplot(FCDreach_global_mod, aes(x=roundedRealNumVehicles/2, y=1-value, colour=as.factor(t3-t2), lty=as.factor(t2-t1)) ) +
stat_summary( fun.y=mean, geom="line" ) +
stat_summary(fun.data=mean_cl_normal,geom="errorbar", width=0.5)
在您的第一个图表中,y 轴表示 (1-value) 的每个级别 (t3-t2) 的总和。在第二个中,y 轴是平均值。因此,您可以通过使用 aggregate
重新创建这些值来手动查看,
## Question 1: what is the y-axis of the first plot?
## Aggregate by summing (1-value)
(p1 <- aggregate((1-value) ~ I(t3-t2), data=FCDreach_global_mod, sum))
# I(t3 - t2) (1 - value)
# 1 0.4 19.51663
# 2 0.5 19.70297
## Question 2: where does the 0.075 come from in the stat_summary?
## Aggregate (1-value) taking the mean
(p2 <- aggregate((1-value) ~ I(t3-t2), data=FCDreach_global_mod, mean))
# I(t3 - t2) (1 - value)
# 1 0.4 0.09119921
# 2 0.5 0.09038062
## Get normal confidence intervals
se <- with(FCDreach_global_mod,
do.call(rbind,
lapply(split(1 - value, factor(t3-t2)), function(x)
mean(x) + c(-1,1)*sd(x)/sqrt(length(x))*qnorm(0.975))
))
## Recreate barplot
dat <- setNames(p2, c("x", "y"))
dat <- cbind(dat, setNames(data.frame(se), c("ymin", "ymax")))
ggplot(dat, aes(x,y)) +
geom_bar(stat="identity", aes(fill=factor(x))) +
geom_errorbar(aes(x=x, ymin=ymin, ymax=ymax), color="black", width=0.05) +
theme_bw()
我想要 this data
的条和误差条我设法获得了酒吧:
ggplot(FCDreach_global_mod, aes(x = as.factor(t3-t2), y = 1-value, fill=as.factor(t2-t1) )) +
geom_bar(stat = "identity" )
但是我不知道如何绘制误差线。我尝试了 geom_errorbar()
但无法正常工作。
绘制线图时我会使用:
stat_summary(fun.data=mean_cl_normal, geom="errorbar")
但这似乎不适用于 geom_bar()
我试过这个:
ggplot(FCDreach_global_mod, aes(x = as.factor(t3-t2), y = 1-value, fill=as.factor(t2-t1) ) ) +
stat_summary(fun.y=mean,geom="bar")+
stat_summary(fun.data=mean_cl_normal,geom="errorbar", width=0.5)
y
上的休息与 geom_bar(stat = "identity" )
上的休息看起来完全不同。条形的大小相同,但 y 尺度发生了一些奇怪的事情。
geom_bar:
stat_summary:
编辑:期望的输出是在条形图中显示该图的等价物,当然不包括 x
轴并将 t3-t2
放在 x
我通过以下方式获得:
ggplot(FCDreach_global_mod, aes(x=roundedRealNumVehicles/2, y=1-value, colour=as.factor(t3-t2), lty=as.factor(t2-t1)) ) +
stat_summary( fun.y=mean, geom="line" ) +
stat_summary(fun.data=mean_cl_normal,geom="errorbar", width=0.5)
在您的第一个图表中,y 轴表示 (1-value) 的每个级别 (t3-t2) 的总和。在第二个中,y 轴是平均值。因此,您可以通过使用 aggregate
重新创建这些值来手动查看,
## Question 1: what is the y-axis of the first plot?
## Aggregate by summing (1-value)
(p1 <- aggregate((1-value) ~ I(t3-t2), data=FCDreach_global_mod, sum))
# I(t3 - t2) (1 - value)
# 1 0.4 19.51663
# 2 0.5 19.70297
## Question 2: where does the 0.075 come from in the stat_summary?
## Aggregate (1-value) taking the mean
(p2 <- aggregate((1-value) ~ I(t3-t2), data=FCDreach_global_mod, mean))
# I(t3 - t2) (1 - value)
# 1 0.4 0.09119921
# 2 0.5 0.09038062
## Get normal confidence intervals
se <- with(FCDreach_global_mod,
do.call(rbind,
lapply(split(1 - value, factor(t3-t2)), function(x)
mean(x) + c(-1,1)*sd(x)/sqrt(length(x))*qnorm(0.975))
))
## Recreate barplot
dat <- setNames(p2, c("x", "y"))
dat <- cbind(dat, setNames(data.frame(se), c("ymin", "ymax")))
ggplot(dat, aes(x,y)) +
geom_bar(stat="identity", aes(fill=factor(x))) +
geom_errorbar(aes(x=x, ymin=ymin, ymax=ymax), color="black", width=0.05) +
theme_bw()