Nothing
## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(eval=TRUE, include=TRUE, echo=TRUE, fig.height = 4, fig.width = 4)
## ----startup------------------------------------------------------------------
library(plotfunctions)
## ----ex1, fig.width=8, fig.height=4, fig.show="hold"--------------------------
par(mfrow=c(1,2))
set.seed(123)
# PLOT1: t-distribution:
test <- rt(1000, df=5)
check_normaldist(test)
# PLOT2: skewed data, e.g., reaction times:
test <- exp(rnorm(1000, mean=.500, sd=.25))
check_normaldist(test)
## ----ex1b, fig.width=8, fig.height=4, fig.show="hold"-------------------------
par(mfrow=c(1,2))
set.seed(123)
# PLOT1: t-distribution:
test <- rt(1000, df=5)
qqnorm(test)
qqline(test)
# PLOT2: skewed data, e.g., reaction times:
test <- exp(rnorm(1000, mean=.500, sd=.25))
qqnorm(test)
qqline(test)
## ----ex2----------------------------------------------------------------------
# example InsectSprays from R datasets
avg <- aggregate(count ~ spray, data=InsectSprays, mean)
avg <- merge(avg,
aggregate(count ~ spray, data=InsectSprays, sd),
by="spray", all=TRUE)
# we could add the type of spray to the averages:
avg$type <- c(1,1,2,2,2,1)
# visualize output
dotplot_error(avg$count.x, se.val=avg$count.y, groups=avg$type, labels=avg$spray)
## ----ex3, fig.width=12, fig.height=4, fig.show="hold"-------------------------
# 3 panels:
par(mfrow=c(1,3), cex=1.1)
# define x and y
x <- -5:20
y <- x^2
# PLOT 1:
plot(x, y, pch=16)
# convert arrow positions:
ap1 <- getArrowPos(x, y, units="coords")
# PLOT 2:
plot(x, -1*y)
# convert arrow positions:
ap2 <- getArrowPos(x, -1*y, units="coords")
ap3 <- getArrowPos(c(1,1,1), c(1,.5,0), units="prop")
# PLOT 3:
plot(x, -2*y+200, ylim=c(-600,200), pch=18)
abline(h=c(0,-400), lty=3, col='red2')
points(x, -1*y)
ap4 <- getArrowPos(c(0,0,0), c(.75,.5,.25), units="prop")
# DRAW ARROWS:
drawDevArrows(start=ap1, end=ap2, arrows="none",
col=alphaPalette("red2", f.seq=c(.1,1), n=length(x)))
drawDevArrows(start=ap3, end=ap4, arrows="end", col="red2", lwd=3, length=.1)
## ----ex4, fig.width=8, fig.height=8, fig.show="hold"--------------------------
par(mfrow=c(2,2), cex=1.1)
# PLOT 1:
emptyPlot(10,1)
# PLOT 2:
emptyPlot(c(-10, 10), c(-100,500),
h0=0, main="Plot 2", xlab="X", ylab="Y")
# PLOT 3:
emptyPlot(c(-100, 1000), c(-8,8),
h0=0, v0=0, eegAxis=TRUE,
main="Plot 3: EEG axes")
# PLOT 4:
emptyPlot(c(-100, 1000), c(-8,8),
h0=0, v0=0,
xmark=TRUE, ymark=c(-5,5), las=1,
main="Plot 4: Simplified axes")
## ----ex5----------------------------------------------------------------------
# load example data:
data(chickwts)
# first calculate means and sd per feeding type:
avg <- with(chickwts, tapply(weight, list(feed), mean))
sds <- with(chickwts, tapply(weight, list(feed), sd))
# barplot:
b <- barplot(avg, beside = TRUE, ylim=c(0,400),
col=1, las=2)
# add errorbars:
errorBars(b, avg, sds, border = TRUE)
# add average:
add_bars(b[length(b)]+diff(b[1:2]), mean(avg),
col="red", xpd=TRUE)
errorBars(b[length(b)]+diff(b[1:2]), mean(avg), se(avg), xpd=TRUE)
mtext("mean/SE", at=b[length(b)]+diff(b[1:2]), line=1, side=1, font=2, las=2)
## ----ex6, fig.show="hold"-----------------------------------------------------
emptyPlot(c(-10,100), c(-2,2), h0=0, v0=0)
# Proportions to coordinates:
x <- getCoords(c(0, .25, .5, .75, 1))
y <- getCoords(c(0, .25, .5, .75, 1), side=2)
points(x, y, col="red1", pch=1:5, lwd=2, xpd=TRUE)
# wrt figure region:
x <- getCoords(c(0.05, .25, .5, .75, .95), input="f")
y <- getCoords(c(0.05, .25, .5, .75, .95), side=2, input="f")
points(x, y, col="steelblue", pch=1:5, lwd=2, xpd=TRUE)
## ----ex7, fig.show='hide'-----------------------------------------------------
emptyPlot(c(-10,100), c(-2,2), h0=0, v0=0)
# get plot coordinates:
getFigCoords("p")
# get figure coordinates:
getFigCoords("f")
# get proportions:
getProps(c(20,60,100,500))
getProps(c(-2,1,4), side=2)
## ----ex8, fig.show='hold'-----------------------------------------------------
dat <- expand.grid(x=seq(0,1,by=.1), y=seq(0,1, by=.1))
dat$z <- dat$x * dat$y
emptyPlot(1, 1, xlab="X", ylab="Y")
points(dat$x, dat$y, col=topo.colors(100)[round(dat$z*99)+1], pch=16, cex=2)
gradientLegend(range(dat$z), color="topo", nCol=100,inside = FALSE, pos=.825)
## ----ex9, fig.show='hold'-----------------------------------------------------
emptyPlot(1, 1, xlab="X", ylab="Y", bty='o')
legend("topright", legend=c("normal", "topright"), pch=21)
legend("center", legend=c("normal", "center"), pch=21)
legend("bottomleft", legend=c("normal", "bottomleft"), pch=21)
legend_margin("topright", legend=c("margin", "topright"), pch=21,
col="red1", box.col="red1", text.col="red1")
legend_margin("center", legend=c("margin", "center"), pch=21,
col="red1", box.col="red1", text.col="red1")
legend_margin("bottomleft", legend=c("margin", "bottomleft"), pch=21,
col="red1", box.col="red1", text.col="red1")
## ----ex10, fig.show="hold", fig.width=8, fig.height=4-------------------------
set.seed(1234)
# grand mean of data:
x <- 1:100
y <- -0.01*(x - 30)^2+rnorm(100, mean=100)
# stimulus onset values:
so <- runif(100, min=20, max=40)+rnorm(100, sd=2)
par(mfrow=c(1,2), cex=1.1)
# PLOT 1
emptyPlot(range(x), range(y), h0=0,
main="Data", xlab="Time", ylab="Y")
lines(x, y, lwd=2, col='steelblue')
# add mean of stimulus onset:
abline(v=mean(so), lwd=2)
# add density of stimulus onset in
marginDensityPlot(density(so), side=1)
# PLOT 2
emptyPlot(range(x), range(y), h0=0,
main="More examples", xlab="Time", ylab="Y")
lines(x, y, lwd=2, col='steelblue')
# add mean of stimulus onset:
abline(v=mean(so), lwd=2)
# add density of stimulus onset on top of plot:
marginDensityPlot(density(so), side=3, scale=1, density=25)
marginDensityPlot(density(so), side=3, from=getCoords(0, side=2), scale=1)
# or on left side:
marginDensityPlot(density(y), side=2, col="steelblue")
## ----ex11, fig.width=4, fig.height=4, fig.show="hold"-------------------------
data(volcano)
x <- 10*(1:nrow(volcano))
y <- 10*(1:ncol(volcano))
par(cex=1.1)
# PLOT 1: image and contour
image(x, y, volcano, col = terrain.colors(100),
axes = FALSE, xlab="", ylab="")
contour(x, y, volcano, levels = seq(90, 200, by = 5),
add = TRUE, col = "peru")
# PLOT 2: color_contour
color_contour(x, y, volcano,
color = terrain.colors(100), axes=FALSE,
col="peru", levels=seq(80, 200, by = 5), zlim=c(80,200))
# PLOT 3: filled.contour (takes the complete device)
filled.contour(x, y, volcano, color.palette = terrain.colors, axes=FALSE)
# not possible to add contour lines:
contour(x, y, volcano, levels = seq(90, 200, by = 5),
add = TRUE, col = "peru")
## ----ex12, fig.show="hold", fig.width=8, fig.height=4-------------------------
dat <- expand.grid(x=seq(0,1,by=.1), y=seq(0,1, by=.1))
dat$z <- dat$x * dat$y
# inspect the structure of the data:
head(dat)
par(mfrow=c(1,2), cex=1.1)
# PLOT 1: plot the default surface
plotsurface(dat, view=c("x", "y"), predictor="z")
# PLOT 2: customized color palette
plotsurface(dat, view=c("x", "y"), predictor="z",
color = c('gray25', 'white', 'red'), col=1,
main="Customized interaction surface", labcex=1)
## ----ex13, fig.show=FALSE, fig.width=8, fig.height=4--------------------------
# Generate some data:
x <- -10:20
y <- 0.3*(x - 3)^2 + rnorm(length(x))
s <- 0.15*abs(100-y + rnorm(length(x)))
par(mfrow=c(1,2), cex=1.1)
# PLOT 1: shaded confidence interval
emptyPlot(range(x), c(-25,100), h0=0, v0=0, main="Symmetric CI")
plot_error(x, y, s, shade=TRUE, lwd=2, col="steelblue")
# PLOT 2: Use of se.fit2 for asymmetrical error bar
cu <- y + 2*s
cl <- y - s
emptyPlot(range(x), c(-25,100), h0=0, v0=0, main="Asymmetric CI")
plot_error(x, y, s, shade=TRUE, lwd=2, col="steelblue")
plot_error(x, y, se.fit=cu, se.fit2=cl, col='red', shade=TRUE, density=30)
## ----ex14, eval=FALSE---------------------------------------------------------
# # 1 A. load png image directly -- only works with package png:
# img <- system.file("extdata", "Netherlands_by_SilverSpoon.png", package = "plotfunctions")
# plot_image(img=img, type='png')
## ----ex14b--------------------------------------------------------------------
# 1 B. load image object:
data(img)
plot_image(img=img, type='image')
## ----ex15, fig.width=8, fig.height=4, fig.show="hold"-------------------------
par(mfrow=c(1,2), cex=1.1)
# PLOT 1: replace colors
plot_image(img=img, type='image', replace.colors = list("#00000000"="#0000FF33", "#B.+"="#99DD99FF"),
main="the Netherlands")
points(c(.45, .8), c(.6, .85), pch=15)
text(c(.45, .8), c(.6, .85), labels=c("Amsterdam", "Groningen"), pos=1)
# example data
x <- 1:100
y <- -0.01*(x - 30)^2+rnorm(100, mean=100)
# PLOT 2: add picture to existing plot, while keeping original picture size ratio
emptyPlot(100, c(50, 100), h0=0,
main="Example data plot")
lines(x, y, lwd=2, col='steelblue')
plot_image(img=img, type='image', add=TRUE,
xrange=c(30,70), yrange=c(50,80), adj=1, keep.ratio = TRUE,
replace.colors = list("#B.+"="steelblue"),
bty='n')
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.