I'm new to R and haven't done any programming before...
When I attempt to create a box chart with standard error bars I get the error message mentioned in the title.
I used a script I found on R Cookbook which I tweaked a bit:
ggplot(GVW, aes(x="variable",y="value",fill="Genotype")) +
geom_bar(position=position_dodge(),stat="identity",colour="black", size=.3)+
geom_errorbar(data=GVW[1:64,3],aes(ymin=value-seSKO, ymax=value+seSKO), size=.3, width=.2, position=position_dodge(.9))+
geom_errorbar(data=GVW[65:131,3],aes(ymin=value-seSWT, ymax=value+seSWT), size=.3, width=.2, position=position_dodge(.9))+
geom_errorbar(data=GVW[132:195,3],aes(ymin=value-seEKO, ymax=value+seEKO), size=.3, width=.2, position=position_dodge(.9))+
geom_errorbar(data=GVW[196:262,3],aes(ymin=value-seEWT, ymax=value+seEWT), size=.3, width=.2, position=position_dodge(.9))+
xlab("Time")+
ylab("Weight [g]")+
scale_fill_hue(name="Genotype", breaks=c("KO", "WT"), labels=c("Knock-out", "Wild type"))+
ggtitle("Effect of genotype on weight-gain")+
scale_y_continuous(breaks=0:20*4) +
theme_bw()
Data<- data.frame(
Genotype<- sample(c("KO","WT"), 262, replace=T),
variable<- sample(c("Start","End"), 262, replace=T),
value<- runif(262,20,40)
)
names(Data)[1] <- "Genotype"
names(Data)[2] <- "variable"
names(Data)[3] <- "value"
The error happens because of you are trying to map a numeric vector to
data
ingeom_errorbar
:GVW[1:64,3]
.ggplot
only works withdata.frame
.In general, you shouldn't subset inside
ggplot
calls. You are doing so because your standard errors are stored in four separate objects. Add them to your originaldata.frame
and you will be able to plot everything in one call.Here with a
dplyr
solution to summarise the data and compute the standard error beforehand.