Reputation: 1115
I seem to have missed a change within how ggplot2 works. I have an example from a statistics textbook (A. Field (2012), Discovering statistics using R, p. 593) which I'm sure worked but now does not produce connection lines between means of grouped data any more.
Here's the sample data:
participant<-gl(20, 9, labels = c("P01", "P02", "P03", "P04", "P05", "P06", "P07", "P08", "P09", "P10", "P11", "P12", "P13", "P14", "P15", "P16", "P17", "P18", "P19", "P20" ))
drink<-gl(3, 3, 180, labels = c("Beer", "Wine", "Water"))
imagery<-gl(3, 1, 180, labels = c("Positive", "Negative", "Neutral"))
groups<-gl(9, 1, 180, labels = c("beerpos", "beerneg", "beerneut", "winepos", "wineneg", "wineneut", "waterpos", "waterneg", "waterneut"))
attitude<-c(1, 6, 5, 38, -5, 4, 10, -14, -2, 26, 27, 27, 23, -15, 14, 21, -6, 0, 1, -19, -10, 28, -13, 13, 33, -2, 9, 7, -18, 6, 26, -16, 19, 23, -17, 5, 22, -8, 4, 34, -23, 14, 21, -19, 0, 30, -6, 3, 32, -22, 21, 17, -11, 4, 40, -6, 0, 24, -9, 19, 15, -10, 2, 15, -9, 4, 29, -18, 7, 13, -17, 8, 20, -17, 9, 30, -17, 12, 16, -4, 10, 9, -12, -5, 24, -15, 18, 17, -4, 8, 14, -11, 7, 34, -14, 20, 19, -1, 12, 43, 30, 8, 20, -12, 4, 9, -10, -13, 15, -6, 13, 23, -15, 15, 29, -1, 10, 15, 15, 12, 20, -15, 6, 6, -16, 1, 40, 30, 19, 28, -4, 0, 20, -10, 2, 8, 12, 8, 11, -2, 6, 27, 5, -5, 17, 17, 15, 17, -6, 6, 9, -6, -13, 30, 21, 21, 15, -2, 16, 19, -20, 3, 34, 23, 28, 27, -7, 7, 12, -12, 2, 34, 20, 26, 24, -10, 12, 12, -9, 4)
longAttitude<-data.frame(participant, drink, imagery, groups, attitude)
And here's the plot code:
library(ggplot2)
attitudeInt <- ggplot(longAttitude, aes(drink, attitude, colour = imagery))
attitudeInt + stat_summary(fun.y = mean, geom = "point") +
stat_summary(fun.y = mean, geom = "line", aes(group = imagery)) +
stat_summary(fun.data = mean_cl_boot, geom = "errorbar", width = 0.2) +
labs(x = "Type of Drink", y = "Mean Attitude", colour = "Type of Imagery")
Isn't it the case that the part stat_summary(fun.y = mean, geom="line", aes(group = imagery))
should draw exactly these connection lines?
Thanks for your help.
Upvotes: 4
Views: 4427
Reputation: 701
As Brian Diggs pointed out, this is a known bug, that has been fixed, recently. Thus, upgrading ggplot2 to 0.9.3.1 or above should bring the proper line drawing behaviour in stat_summary back.
Upvotes: 0
Reputation: 98499
This will not solve the problem in ggplot2
but this is workaround.
First summarize your data. As in original code you used mean_cl_boot
for calculating confidence intervals, then used also in this example.
library(plyr)
dfAtt<-ddply(longAttitude,~drink+imagery,function(x) mean_cl_boot(x$attitude))
dfAtt
drink imagery y ymin ymax
1 Beer Positive 21.05 15.65000 26.90750
2 Beer Negative 4.45 -2.60125 12.00000
3 Beer Neutral 10.00 5.49750 14.75000
4 Wine Positive 25.35 22.40000 28.25000
5 Wine Negative -12.00 -14.40000 -9.49875
6 Wine Neutral 11.65 8.95000 14.40125
7 Water Positive 17.40 14.40000 20.45000
8 Water Negative -9.20 -12.25000 -6.34875
9 Water Neutral 2.35 -0.75125 4.90000
Then plot your data:
ggplot(dfAtt, aes(x=drink, y=y, colour=imagery,group=imagery)) +
geom_errorbar(aes(ymin=ymin, ymax=ymax), width=.2) +
geom_line() +
geom_point() +
labs(x = "Type of Drink", y = "Mean Attitude", colour = "Type of Imagery")
Upvotes: 8