我正在使用R (3.0.1)和ggplot2 (0.9.3.1)。我有一些包含正数和负数的数据,并且想要得到一个geom_tile图,其中正数和负数有不同的颜色渐变(例如,正数从红到黄,负数从蓝到青)。我可以使用scale_fill_gradientn来实现我想要的效果(见下文),但这将导致一个连续的渐变,其中包括中点(0)的“白色”颜色。我需要避免这些中点颜色,因此需要在零处“断开”渐变。换句话说,我需要两个连续的渐变(一个为正值,一个为负值),并且在零处有一个离散的断点。有什么帮助吗?
dat <- data.frame(Row = rep(x = LETTERS[1:5], times = 10)
, Col = rep(x = LETTERS[1:10], each = 5)
, Y = runif(n = 50, min = -1, max = 1))
p <- ggplot(data = dat, aes(x = Row, y = Col)) +
geom_tile(aes(fill = Y)) +
scale_fill_gradientn(colours=c("blue","cyan","white", "yellow","red"), values=rescale(c(-1,0,1)))