I am creating depth plots in ggplot2 using the following data frame:
TTTTOM<- data.frame(Treatment=c("Mineral", "Mineral", "Mineral", "OM", "OM", "OM", "Veg", "Veg", "Veg"), Depth2=c(-7.5, -4.5, -1.5, -7.5, -4.5, -1.5, -7.5, -4.5, -1.5), mean=c(2.83, 3.33, 3.16, 9.16, 11.17, 11.67, 4.83, 5, 5.17), se=c(0.7, 1.12, 0.65, 2.41, 3.28, 3.12, 1.83, 1.71, 0.95))
I've used this code with ggplot2 to create a plot, but the position dodge doesn't seem to be working with the error bars the same way it is working for the lines and points. I need my error bars to run through my points (ie have them dodged by the same amount). Thanks for your help.
pd <- position_dodge(0.3)
ggplot(TTTTOM, aes(x=Depth2, y=mean, linetype=Treatment)) +
geom_line(aes(linetype=Treatment), colour="black", size=0.75, position=pd) +
geom_errorbar(aes(ymin=mean-se, ymax=mean+se), linetype=1, colour="black", width=.1, position=pd) +
geom_point(colour="black",shape=16, size=2.0, position=pd) +
scale_linetype_manual(values=c(1, 2, 4), labels=c("Organic", "Mineral", "Vegetated"))+
geom_vline(aes(xintercept=0), linetype="dashed")+
theme(legend.position="none",
axis.title.x=element_text(size=18, margin=margin(10,0,0,0)),
legend.title=element_blank(),
legend.text=element_text(size=18),
legend.key.width=unit(2,"line"),
axis.text=element_text(size=18),
axis.title.y=element_text(size=16, margin=margin(0,10,0,0)),
plot.margin = unit(c(.25, .25, .25, .25), "in"))+
labs(x=paste("Distance from \n sediment surface (cm)"), y="% Total OM") +
expand_limits(x=c(-10,0))+
coord_flip()
Your call to geom_errorbar() needs a group argument; in this case, group=Treatment :
pd <- position_dodge(.3)
ggplot(TTTTOM, aes(x=Depth2, y=mean, linetype=Treatment)) +
geom_line(aes(linetype=Treatment), colour="black", size=0.75, position=pd) +
geom_errorbar(aes(ymin=mean-se, ymax=mean+se, group=Treatment),
linetype=1, colour="black", width=.1, position=pd) +
geom_point(colour="black",shape=16, size=2.0, position=pd) +
scale_linetype_manual(values=c(1, 2, 4), labels=c("Organic", "Mineral", "Vegetated"))+
geom_vline(aes(xintercept=0), linetype="dashed")+
theme(legend.position="none",
axis.title.x=element_text(size=18, margin=margin(10,0,0,0)),
legend.title=element_blank(),
legend.text=element_text(size=18),
legend.key.width=unit(2,"line"),
axis.text=element_text(size=18),
axis.title.y=element_text(size=16, margin=margin(0,10,0,0)),
plot.margin = unit(c(.25, .25, .25, .25), "in"))+
labs(x=paste("Distance from \n sediment surface (cm)"), y="% Total OM") +
expand_limits(x=c(-10,0))+
coord_flip()
Output:
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.