In ggplot2 I’m attempting a simple thing that I just can’t get for some reason. I have adjusted means and SE in a data frame and want to plot the means, error bars and then connect the means with points. Here’s the code and the error (it does everything except connect the means with geom_line (working with RCookbook:
library(ggplot2)
#data set
data1 <- structure(list(group = structure(1:3, .Label = c("1", "2", "3"
), class = "factor"), estimate = c(55.7466654122763, 65.0480954172939,
61.9552391704298), SE = c(2.33944612149257, 2.33243565412438,
2.33754952927041), t.ratio = c(23.8290016171476, 27.8884844271143,
26.5043535525714)), .Names = c("group", "estimate", "SE", "t.ratio"
), row.names = c(NA, 3L), class = "data.frame")
#the attempted plot
pd <- position_dodge(.1)
ggplot(data1, aes(x=group, y=estimate, group=group)) +
geom_errorbar(aes(ymin=estimate-SE, ymax=estimate+SE),
colour="black", width=.1, position=pd) +
geom_line(data=data1, aes(x=group, y=estimate)) +
geom_point(position=pd, size=4)
the error:
ymax not defined: adjusting position using y instead
geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?
If you remove the grouping by
groupwithin the ggplot call and setx = as.numeric(group )within the call togeom_line, the it works.Also, you don’t need to re-reference
data1withingeom_lineIf you
groupbygroup, then you only have one value forgeom_lineto create a line from, hence the error message. The same error occurs ifggplotis considering thexorymapping variables as a factor – this is because if you code a variable as a factor R (and ggplot) will consider them independent groups, and not connect the points – this is sensible default behaiviour.EDIT – with alphabetic factor labels
This will work with alphabetic factor labels due to the way factors are coded internally by
R(ie as.numeric(factor) returns numbers not the factor labels)ie.e
Changing group to
a,b,c