library(superb) # to import the geom_superberrorbar
library(ggplot2)
# let's have a fake data frame
dta <- data.frame(grp = c(1,2,3), center=c(1,2,3), width = c(1,1,1.5) )
# an example with none of the new features = a regular error bar
ggplot(dta, aes(ymin=center-width, ymax=center+width, x = grp ) ) +
geom_superberrorbar()
# an example with left-pointing error bars
ggplot(dta, aes(ymin=center-width, ymax=center+width, x = grp ) ) +
geom_superberrorbar(direction="left", width = 0.1)
# an example with doubled-tipped error bar and the default tipgap
ggplot(dta, aes(ymin=center-width, ymax=center+width, x = grp ) ) +
geom_superberrorbar(tipformat = "double", width = 0.1)
# an example with left-pointing tripled-tip error bars with small gaps
ggplot(dta, aes(ymin=center-width, ymax=center+width, x = grp ) ) +
geom_superberrorbar(tipformat = "triple", width= 0.1, tipgap = 0.04, direction = "left")
# an example with unidirectional error bars (here "up" bars)
ggplot(dta, aes(y= center, ymin=center-width, ymax=center+width, x = grp ) ) +
geom_bar(stat="identity", fill = "yellow") +
geom_superberrorbar(pointing = "up")
# a final example with two-coloured, left-pointing tripled-tip error bars with small gaps
ggplot(dta, aes(ymin=center-width, ymax=center+width, x = grp ) ) +
geom_superberrorbar(tipformat = "triple", width= 0.1, tipgap = 0.04, direction = "left",
colour = "black", vcolour = "orange")
# This new geom is integrated inside superbPlot() so that you can vary the
# error bar shapes. Let's see examples:
# using GRD to generate random data with a moderate effect
options(superb.feedback = 'none') # shut down 'warnings' and 'design' interpretation messages
test <- GRD(SubjectsPerGroup = 20,
WSFactors = "Moment(5)",
Effects = list("Moment" = extent(10) ),
Population = list(mean = 100, stddev = 25, rho = 0.8) )
ornate = list(
labs(title =paste("(left) 95% confidence intervals",
"\n(right) 99% confidence intervals",
"\n(center, up) 99.9% confidence intervals")),
xlab("Moment"), ylab("Score"),
coord_cartesian( ylim = c(85,110) )
)
plt1 <- superbPlot(test,
WSFactors = "Moment(5)",
variables = c("DV.1","DV.2","DV.3","DV.4","DV.5"),
adjustments=list(purpose = "difference", decorrelation = "CA"),
errorbarParams = list(direction = "left", color="purple",
width = 0.2, position = position_nudge(-0.05) ),
gamma = 0.95,
plotStyle = "line" ) + ornate
plt2 <- superbPlot(test,
WSFactors = "Moment(5)",
variables = c("DV.1","DV.2","DV.3","DV.4","DV.5"),
adjustments=list(purpose = "difference", decorrelation = "CA"),
errorbarParams = list(direction = "right", tipgap = 0.25, tipformat = "double",
width = 0.2, position = position_nudge(+0.05) ),
gamma = 0.99,
plotStyle = "line" ) + ornate
plt3 <- superbPlot(test,
WSFactors = "Moment(5)",
variables = c("DV.1","DV.2","DV.3","DV.4","DV.5"),
adjustments=list(purpose = "difference", decorrelation = "CA"),
errorbarParams = list(direction = "both", tipformat = "single", pointing="up",
width = 0.2, position = position_nudge(0) ),
gamma = 0.999,
plotStyle = "line" ) + ornate
# transform the ggplots into "grob" so that they can be manipulated
plt1 <- ggplotGrob(plt1)
plt2 <- ggplotGrob(plt2 + makeTransparent() )
plt3 <- ggplotGrob(plt3 + makeTransparent() )
# put the grobs onto an empty ggplot
ggplot() +
annotation_custom(grob=plt1) +
annotation_custom(grob=plt2) +
annotation_custom(grob=plt3)
Run the code above in your browser using DataLab