I want multiple plots to share the same color-scale. A given value in one plot should have the same color as in the second plot. How do I enforce this with ggplot2
?
Here is an example of two plots that do not share color-scales, but should:
x <- matrix(1:16, 4)
y <- matrix(1:16-5, 4)
library(reshape)
ggplot(data = melt(x)) + geom_tile(aes(x=X1,y=X2,fill = value))
ggplot(data = melt(y)) + geom_tile(aes(x=X1,y=X2,fill = value))
These two plots look the same, but they should look different!
You need to set the limits of your scale bar to have certain colors and also define the mean value (the value in the middle) to be a same value for both plots.
rng = range(c((x), (y))) #a range to have the same min and max for both plots
ggplot(data = melt(x)) + geom_tile(aes(x=X1,y=X2,fill = value)) +
scale_fill_gradient2(low="blue", mid="cyan", high="purple", #colors in the scale
midpoint=mean(rng), #same midpoint for plots (mean of the range)
breaks=seq(-100,100,4), #breaks in the scale bar
limits=c(floor(rng[1]), ceiling(rng[2]))) #same limits for plots
ggplot(data = melt(y)) + geom_tile(aes(x=X1,y=X2,fill = value)) +
scale_fill_gradient2(low="blue", mid="cyan", high="purple",
midpoint=mean(rng),
breaks=seq(-100,100,4),
limits=c(floor(rng[1]), ceiling(rng[2])))
This is the output:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With