Description Usage Arguments Details Value Author(s) References See Also Examples
View source: R/raw.means.plot.R
raw.means.plot is a function for visualizing results of experimental designs with up to two factors. It plots both raw data (background) and factor/cell means (foreground) to provide a more accurate visualization of the underlying distribution.
1 2 3 4 5 6 7 8 9 10 11 | raw.means.plot(data, col.offset = 2, col.x = 3, col.value = 4, na.rm = FALSE,
avoid.overlap = c("y", "x", "both"), y.factor = 1, y.amount = NULL, x.amount = 0.05,
pch = 21:25, lty = 1:5,
bg.b.col = "darkgrey", bg.f.col = NULL, fg.b.col = "black",fg.f.col = "black",
type = "o", pt.cex = 1, lwd = 1, xlab = "", ylab = "",
ylim, max.offset = 0.2, xaxis = TRUE, x.labels, xaxt = "n",
plot = TRUE, legend = TRUE,
mar = NULL, reset.mar = TRUE, l.pos, yjust = 0.5, l.bty = "n", l.adj = c(0, 0.5),
...)
raw.means.plot2(data, col.id, col.offset, col.x, col.value, fun.aggregate = "mean", ...)
|
data |
a |
col.id |
a |
col.offset |
a |
col.x |
a |
col.value |
a |
na.rm |
|
avoid.overlap |
character. What should happen to datapoints within one cell of the two factors that have the same value.
|
y.factor |
|
y.amount |
|
x.amount |
|
pch |
|
lty |
|
bg.b.col |
background border color: border color of raw data points. Default: |
bg.f.col |
background filling color: fill color of raw data points. Default: |
fg.b.col |
foreground border color: border color of mean data points. Default: |
fg.f.col |
foreground fill color: fill color for mean data points. Default: |
type |
same as type in |
pt.cex |
|
lwd |
|
xlab |
x-axis label. Default: |
ylab |
y-axis label. Default: |
ylim |
the y-axis limits of the plot. If not specified (the default) will be taken from data so that all raw data points are visible and a warning message is displayed specifying the ylim. |
max.offset |
|
xaxis |
|
x.labels |
|
xaxt |
A character which specifies whether ot not the x-axis should be plotted by the call to plot function. Interfers with the aforementioned |
plot |
|
legend |
|
mar |
|
reset.mar |
|
l.pos |
|
yjust |
how the legend is to be justified relative to the legend y location. A value of 0 means top, 0.5 means centered and 1 means bottom justified. Default is 0.5. |
l.bty |
the type of box to be drawn around the legend. The allowed values are |
l.adj |
|
... |
further arguments which are either passed to plot or legend (or |
fun.aggregate |
Function or function name used for aggregating the data across the trwo factors. Default is |
raw.means.plot2
is probably the more useful function, as it allows for using a data.frame with more than two-factors and aggregates across the other factors, but needs a column specifiying the experimental unit (e.g., participant).
raw.means.plot
is basically an advanced wrapper for two other functions: plot
and (if legend=TRUE
) legend
. Furthermore, raw data is plotted with a call to points
and the means with a call to lines
.
You can use raw.means.plot
to plot only a legend by setting plot = FALSE
and legend = TRUE
. Then, raw.means.plot
will draw an invisible plot with xlim = c(0,10)
and ylim = c(0, 10)
and place the legend on this invisible plot. You can specify l.pos
to position the legend, otherwise it will be plotted at c(5,5)
(i.e., in the middle of the plot). Note that xpd = TRUE
in the call to legend
(see link{par}
).
Nothing. This function is invoked for its side effects.
Henrik Singmann (henrik.singmann@psychologie.uni-freiburg.de) with ideas from Jim Lemon
see http://www.psychologie.uni-freiburg.de/Members/singmann/R/rm.plot
add.ps
can be used in addition toraw.means.plot
to compare the factors at each x-axis position, by adding p-values from t-tests to the x-axis.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | x <- data.frame(id = 1:150, offset = rep(c("Group A", "Group B", "Group C"),each = 50), xaxis = sample(c("A", "B", "C", "D"),150, replace = TRUE), data = c(rnorm(50, 10, 5), rnorm(50, 15,6), rnorm(50, 20, 5)))
raw.means.plot(x)
raw.means.plot(x, main = "Example", ylab = "Values", xlab = "Factor", title = "Groups")
raw.means.plot(x, "offset", "xaxis", "data")
raw.means.plot(x, "xaxis", "offset", "data")
raw.means.plot(x, 3, 2, 4)
x2 <- data.frame(id = 1:150, offset = rep(c("Group A", "Group B", "Group C"),each = 50), xaxis = sample(c("A", "B", "C", "D"),150, replace = TRUE), data = c(rnorm(50, 10, 5), rnorm(50, 15,6), rnorm(50, 20, 5)))
layout(matrix(c(1,2,3,3), 2,2,byrow = TRUE), heights = c(7,1))
raw.means.plot(x, main = "Data x1", ylab = "Values", xlab = "Factor", legend = FALSE, mar = c(4,4,4,1)+0.1)
raw.means.plot(x2, main = "Data x2", ylab = "Values", xlab = "Factor", legend = FALSE, mar = c(4,4,4,1)+0.1)
raw.means.plot(x2, plot = FALSE, title = "Groups")
y <- data.frame(id = 1:300, offset = rep(1, 300), axis = sample(LETTERS[1:6],300, replace = TRUE), data = c(rnorm(100, 1), rnorm(100), rnorm(100,1)))
par(mfrow = c(2,2))
raw.means.plot(y, legend = FALSE)
raw.means.plot(y, type = "p", legend = FALSE)
raw.means.plot(y, type = "l", legend = FALSE)
raw.means.plot(y, 3, 2, x.labels = "one group only")
# Example with overlapping points
z <- data.frame (id = 1:200, offset = rep(c("C 1", "C 2"), 200), axis = sample(LETTERS[1:4], 200, replace = TRUE), data = sample(1:20, 200, replace = TRUE))
# x versus y jitter
par(mfrow = c(2,2))
raw.means.plot(z, avoid.overlap = "none", main = "no-jitter")
raw.means.plot(z, main = "y-axis jitter (default)")
raw.means.plot(z, avoid.overlap = "x", main = "x-axis jitter")
raw.means.plot(z, avoid.overlap = "both", main = "both-axis jitter")
# y-axis jitter (default)
par(mfrow = c(2,2))
raw.means.plot(z, avoid.overlap = "none", main = "no jitter")
raw.means.plot(z, y.factor = 0.5, main = "smaller y-jitter")
raw.means.plot(z, main = "standard y-jitter")
raw.means.plot(z, y.factor = 2, main = "bigger y-jitter")
# x-axis jitter (default)
par(mfrow = c(2,2))
raw.means.plot(z, avoid.overlap = "none", main = "no jitter")
raw.means.plot(z, avoid.overlap = "x", x.amount = 0.025, main = "smaller x -jitter")
raw.means.plot(z, avoid.overlap = "x", main = "standard x-jitter")
raw.means.plot(z, avoid.overlap = "x", x.amount= 0.1, main = "bigger x-jitter")
## Not run:
#The examples uses the OBrienKaiser dataset from car and needs reshape.
require(reshape)
require(car)
data(OBrienKaiser)
OBKnew <- cbind(factor(1:nrow(OBrienKaiser)), OBrienKaiser)
colnames(OBKnew)[1] <- "id"
OBK.long <- melt(OBKnew)
OBK.long[, c("measurement", "time")] <- t(vapply(strsplit(as.character(OBK.long$variable), "\\."), "[", c("", "")))
raw.means.plot2(OBK.long, "id", "measurement", "gender", "value")
raw.means.plot2(OBK.long, "id", "treatment", "gender", "value")
# also use add.ps:
# For this example the position at each x-axis are within-subject comparisons!
raw.means.plot2(OBK.long, "id", "measurement", "gender", "value")
add.ps(OBK.long, "id", "measurement", "gender", "value", paired = TRUE) #reference is "fup"
raw.means.plot2(OBK.long, "id", "measurement", "gender", "value")
add.ps(OBK.long, "id", "measurement", "gender", "value", ref.offset = 2, paired = TRUE) #reference is "post"
# Use R's standard (i.e., Welch test)
raw.means.plot2(OBK.long, "id", "treatment", "gender", "value")
add.ps(OBK.long, "id", "treatment", "gender", "value", prefixes = c("p(control vs. A)", "p(control vs. B)"))
# Use standard t-test
raw.means.plot2(OBK.long, "id", "treatment", "gender", "value")
add.ps(OBK.long, "id", "treatment", "gender", "value", var.equal = TRUE, prefixes = c("p(control vs. A)", "p(control vs. B)"))
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.