It is often desirable to visualize the preprocessed data, either as a
grand average or by condition. In some cases it is even necessary to
visualize the trend in the data over a continuous predictor. So, the
functions ppl_plot_avg
and
ppl_plot_avg_contour
provide straightforward plotting
options for such cases. These functions internally calculate the
average(s) and plot the results. The plotting is powered by
ggplot2
, so further customization (plot titles, custom
themes, etc.) is still possible. For more information about ggplot2, please refer
to its reference manual and extensive documentation.
Using the function ppl_plot_avg
, it is possible to plot
the overall average of the data. In Column
simply put the
column containing the pupil size data
ppl_plot_avg(data = dat, xlim = c(0, 2000), Column = "Pupil",
Condition1 = NULL, Condition2 = NULL, Cond1Labels = NA,
Cond2Labels = NA, ErrorBar = TRUE, PupilPreTheme = TRUE)
To add a title to the plot, simply add the title function from
ggplot2
.
ppl_plot_avg(data = dat, xlim = c(0, 2000), Column = "Pupil",
Condition1 = NULL, Condition2 = NULL, Cond1Labels = NA,
Cond2Labels = NA, ErrorBar = TRUE, PupilPreTheme = TRUE) +
ggtitle("Averaged Data")
To customize the appearance of a plot (e.g., font, size, color,
margins, etc.), the PupilPreTheme
parameter can be set to
FALSE
, which reverts to the default theming in
gglpot2
. In this way, the user can apply a custom theme to
the plot. Detailed information about creating themes can be found at ggplot2 Theme
Vignette. For the purpose of illustration, the default ggplot2 theme
has been applied, with the axis text elements increased in size.
ppl_plot_avg(data = dat, xlim = c(0, 2000), Column = "Pupil",
Condition1 = NULL, Condition2 = NULL, Cond1Labels = NA, Cond2Labels = NA,
ErrorBar = TRUE, PupilPreTheme = FALSE) +
theme(axis.text = element_text(size = 15))
The function ppl_plot_avg
can also be used to plot
averages for different conditions, based on a factor variable in the
data. If the current factor level labels are not suitable for plotting,
specify new labels using a list in Cond1Labels
. This will
add curves for all levels in a single plot.
ppl_plot_avg(data = dat, xlim = c(0, 2000), Column = "Pupil",
Condition1 = "talker", Condition2 = NULL,
Cond1Labels = c(CH1 = "Chinese 1", CH8 = "Chinese 3",
CH9 = "Chinese 2", CH2 = "Chinese 4", EN3 = "English 1"),
Cond2Labels = NA, ErrorBar = TRUE, PupilPreTheme = TRUE)
For a 2x2 design, it is possible to specify both conditions. This will create the interaction of the two conditions and plot all combinations in a single plot
ppl_plot_avg(data = dat, xlim = c(0, 2000), Column = "Pupil",
Condition1 = "talker", Condition2 = "ExpLev",
Cond1Labels = c(CH1 = "Chinese 1", CH8 = "Chinese 3",
CH9 = "Chinese 2", CH2 = "Chinese 4", EN3 = "English 1"),
Cond2Labels = c(H = "High Exp", L = "Low Exp"),
ErrorBar = TRUE, PupilPreTheme = TRUE)
Error around the means can be plotted in two ways, either as error bars or as error bands. Note that with the included theme, the colors and shapes change for error bands to maximize readablity.
gridExtra::grid.arrange(
ppl_plot_avg(data = dat, xlim = c(0, 2000), Column = "Pupil",
Condition1 = NULL, Condition2 = NULL, Cond1Labels = NA,
Cond2Labels = NA, ErrorBar = TRUE, PupilPreTheme = TRUE),
ppl_plot_avg(data = dat, xlim = c(0, 2000), Column = "Pupil",
Condition1 = NULL, Condition2 = NULL, Cond1Labels = NA,
Cond2Labels = NA, ErrorBar = FALSE,
ErrorBand = TRUE, PupilPreTheme = TRUE),
nrow=2, ncol=1)
Rather than having standard error plotted, it is possible to have
confidence intervals added to the graph. Confidence intervals can be
plotted either as bars or bands and controlled using
ErrorType
and ConfLev
. ErrorType
should be set to “CI” for confidence intervals, and ConfLev
set to the desired levels of confidence (by default 95). An important
option is the type of desired interval, either pointwise or
simultaneous, using CItype
. Pointwise CIs use the
confidence level provided for each interval plotted. Simultaneous CIs
are, on the other hand, corrected for multiple intervals using the
Bonferroni method. Underlyingly this correction is done using the number
of data points along the x-axis (Time).
gridExtra::grid.arrange(
ppl_plot_avg(data = dat, xlim = c(0, 2000), Column = "Pupil",
Condition1 = NULL, Condition2 = NULL, Cond1Labels = NA,
Cond2Labels = NA, ErrorBar = FALSE, ErrorBand = TRUE,
ErrorType = "CI", ConfLev = 95, CItype = "pointwise",
PupilPreTheme = TRUE),
ppl_plot_avg(data = dat, xlim = c(0, 2000), Column = "Pupil",
Condition1 = NULL, Condition2 = NULL, Cond1Labels = NA,
Cond2Labels = NA, ErrorBar = FALSE, ErrorBand = TRUE,
ErrorType = "CI", ConfLev = 95, CItype = "simultaneous",
PupilPreTheme = TRUE),
nrow=2, ncol=1)
## Grand average calculated using Event means.
## Plot created with pointwise confindence intervals (set to 95%).
## Grand average calculated using Event means.
## Plot created with simultaneous confindence intervals (adjusted to 99.95% using the Bonferroni method).
By default, the plotting function calculates the overall mean in the
data set by time. However, by changing the input to the parameter
Averaging
, it is possible to supply a column name for which
grand mean (mean of means) can be calculated (e.g., “Subject”). Note
that for balanced data, the resultant mean will be the same, but the
size of the error bars/bands will change. For example, given the small
number of participants in this data set, the error bars become much
wider.
ppl_plot_avg(data = dat, xlim = c(0, 2000), Column = "Pupil",
Condition1 = NULL, Condition2 = NULL, Cond1Labels = NA,
Cond2Labels = NA, Averaging = "Subject", ErrorBar = TRUE,
ErrorType = "SE", PupilPreTheme = TRUE)
The function ppl_plot_avg_cdiff
can also be used to plot
the average difference between two conditions.
ppl_plot_avg_cdiff(data = dat, Column = "Pupil",
Condition = list(talker = c("EN3", "CH1")),
ErrorBar = TRUE, PupilPreTheme = TRUE)
Error bands and confidence intervals (both pointwise and
simultaneous) work the same way as in the ppl_plot_avg
function. With regard to averaging, please note that the function will
check that both levels of the condition occur for each level of the
column provided in Averaging
(e.g., Subject or Item), as
this is necessary to calculate the difference based on subject or item
means. If this is not the case, the function will stop. If you would
still like to produce the plot based on the difference between sample
means of the levels, you can set Averaging = NULL
.
In some cases, studies have not employed a factorial design; rather
they aim to investigate continuous variables. Therefore, using the
function ppl_plot_avg_contour
it is also possible to create
a contour plot representing the looks to one interest area as a surface
over the continuous variable and Time. This function calculates the
average time series at each value of the continuous variable and applies
a smooth (utilizing the function gam
in the package mgcv) over the
surface. The function then plots the result as a contour plot. Here, the
example plots pupil dilation as a function of Trial and Time.
ppl_plot_avg_contour(data = dat, Column = "Pupil", Var = "TRIAL_INDEX",
VarLabel = "Trial", xlim = c(0,2000), PupilPreTheme = TRUE,
Colors = c("gray20", "gray90"))