在ggplot中着色超出界限

时间:2016-04-12 07:42:20

标签: r ggplot2

我想绘制一个栅格,以便超出比例限制的值与比例限制本身具有相同的颜色。

# Generate data
pp <- function (n,r=4) {
 x <- seq(-r*pi, r*pi, len=n)
 df <- expand.grid(x=x, y=x)
 df$r <- sqrt(df$x^2 + df$y^2)
 df$z <- cos(df$r^2)*exp(-df$r/6)
 df
}
pp200 <- pp(200)
ggplot(pp200, aes(x, y, fill = z)) +
geom_raster() +
scale_fill_gradient2(limits=c(-0.5, 0.5))

结果: example image

所有超出范围的值均为grey50na.value)!

我也试过了scale_fill_gradient2()选项:

oob=squish #This does not seem to exists anymore

oob=function(x, ...) x #does nothing

oob=clip #this does not work:
#Error in f(...) : argument "x2" is missing, with no default

如何使用比例限制值为当前映射到NA的出界值着色?在上面的示例中,值> 0.5应为蓝色,< -0.5应为红色。我知道我可以通过使用因子切割数据集来做到这一点,但我想要一个连续的色标。我也可以使用休息来设置显示的限制,但我想要显示全色标,无论情节内容如何。如果可能的话,我还想避免对数据进行任何修改。

1 个答案:

答案 0 :(得分:1)

oob = squish似乎不再起作用的原因是ggplot2的某些功能已转移到scales包中。首先加载scales,或者输入oob = scales::squish