Plot data with small differences but large scales Suppose you have some measurement series with quite different variances, see e.g., figure below.

The problem is that the differences between a, b, and d are barely recognizable, because the y-scale is rather large, because of the first measurement (these are no measurement errors, they are quite essential and can not be ignored).
What is the most elegant way to plot the data without losing too much information.
Two possibilities come to my mind:
a) Leave the first measurement out, and supply it otherwise (e.g., in the text or as a table).
b) Make the y-scale exponential (inverse of log). However, this is quite uncommon (how do you do this with R?).
What would you suggest?
 A: I agree with exponential scale and plotting ratios if there is a reference method. Here are some extra, different thoughts:


*

*Not knowing the context, I think the chart scale is fine as is. I can tell what reading of each point approximately and I can also see the trends quite clearly. Transformation fixes some problems and creates some other (mostly on interpretation,) and I'd not use it if, as you said, the norm in your field has been using original scale. In addition, if the first reading is non-trivial, then what's the point of downplaying the fact that it is much lower?

*If the lines are close together, then the lines are close together. From design point of view, I understand why lines a and b should be distinguishable on the chart; but I would be careful not to mix visual distinction with contextual distinction. If they are indeed very close measurements, then yes, it's logical that they are indistinguishable.


To deal with overlapping lines, an approach I often use is to just let them overlap, but use paneling to highlight each of the lines. Here is a black and white example:

This layout allows any line to completely overlap with another line. They will each have a chance to shine.
Here is a colored version. I use a lower saturation value to downplay the background lines, and use a higher saturation and thickness to emphasize the main line:

Here is the reference code:
set.seed(112)

y1 <- rnorm(40)
y2 <- rnorm(40)
y3 <- rnorm(40)
y4 <- rnorm(40)
x  <- seq(1,40)

ymin <- min(c(y1, y2, y3, y4))
ymax <- max(c(y1, y2, y3, y4))

##### Black and white version #####

smallPlot <- function(v1, v2, v3, v4, v5) {
par  (mar=c(5,5,1,1))
plot (x, v2, type="l", col="#cccccc",
      ylim=c(ymin, ymax), ylab=v5, axes=F)
lines(x, v3, col="#cccccc")
lines(x, v4, col="#cccccc")
lines(x, v1)
axis (side=1)
axis (side=2)
}

par(mfrow=c(2,2))
smallPlot(y1, y2, y3, y4, "y1")
smallPlot(y2, y3, y4, y1, "y2")
smallPlot(y3, y4, y1, y2, "y3")
smallPlot(y4, y1, y2, y3, "y4")

##### Colored version #####

smallPlot <- function(v1, v2, v3, v4, v5, c1, c2, c3, c4) {
par  (mar=c(5,5,1,1))
plot (x, v2, type="l", col=c2,
      ylim=c(ymin, ymax), ylab=v5, axes=F)
lines(x, v3, col=c3)
lines(x, v4, col=c4)
lines(x, v1, col=c1, lwd=2)
axis (side=1)
axis (side=2)
}

par(mfrow=c(2,2))
smallPlot(y1, y2, y3, y4, "y1", "#1F78B4", "#B2DF8A", "#FB9A99", "#FDBF6F")
smallPlot(y2, y3, y4, y1, "y2", "#33A02C", "#FB9A99", "#FDBF6F", "#A6CEE3")
smallPlot(y3, y4, y1, y2, "y3", "#E31A1C", "#FDBF6F", "#A6CEE3", "#B2DF8A")
smallPlot(y4, y1, y2, y3, "y4", "#FF7F00", "#A6CEE3", "#B2DF8A", "#FB9A99")

