# This code creates four histograms showing saccadic reaction time
# data. The data is the same in each histogram, but histograms 1-3
# have different bin sizes, while histogram 4 has the same bin size
# as histogram 3, but uses shifted bins.
#
# Figure caption: Four histograms of saccadic reaction time data.
# The same data are used in each histogram. The appearance of the
# data distribution depends on details of histogram creation. The
# first three histograms have different bin sizes. The fourth
# histogram uses the same bin size as the third, but shifts the
# bin locations slightly.
patient1 <- read.table("data/p3359b.csv")[[1]]
# First we set up the histogram bin locations for all four histograms.
binsMat <- matrix(c(0, 0.1, 1, 0, 0.02, 1, 0.0, 0.04, 1.0, 0.02, 0.04, 1.02), nrow = 4, byrow = TRUE)
# We'll also need different y limits and y tickmarks for each
# histogram.
yLimitsMat <- matrix(c(0, 65, 0, 20, 0, 39, 0, 39), nrow = 4, byrow = TRUE)
yTickMarksMat <- matrix(c(0, 20, 60, 0, 5, 20, 0, 10, 30, 0, 10, 30), nrow = 4, byrow = TRUE)
# We loop here so we can choose graphical parameters once, and not
# set them repeatedly for each histogram.
dev.new(width = 10, height = 8)
par(mfrow = c(2, 2))
par(mar = c(5, 4, 1, 1))
for(i in 1:4){
hist(patient1, breaks = seq(from = binsMat[i, 1], to = binsMat[i, 3], by = binsMat[i, 2]), xlab = "Time (s)", ylab = "", main = "", yaxt = "n", ylim = c(yLimitsMat[i, 1], yLimitsMat[i, 2]), cex.lab = 1.6, cex.axis = 1.5)
axis(2, at = seq(from = yTickMarksMat[i, 1], to = yTickMarksMat[i, 3], by = yTickMarksMat[i, 2]), labels = seq(from = yTickMarksMat[i, 1], to = yTickMarksMat[i, 3], by = yTickMarksMat[i, 2]), cex.axis = 1.5)
}