R ggplot中具有最小值和最大值的连续色标

R ggplot中具有最小值和最大值的连续色标,r,ggplot2,R,Ggplot2,我想设置实现极端颜色的阈值,也就是说,给定从color1到color2的梯度和相应的变量z,我想定义值c_min和c_max,使得z的值超过c_max的所有点都有color2,值为z的所有点都低于c_min的颜色1。例如: df <- data.frame(x=rnorm(10), y=rnorm(10), z=c(-100, rnorm(8), 100)) ggplot(df, aes(x=x, y=y, col=z)) + geom_point() + scale_color_g

我想设置实现极端颜色的阈值,也就是说,给定从color1到color2的梯度和相应的变量
z
,我想定义值
c_min
和c_max,使得
z
的值超过
c_max
的所有点都有color2,值为
z
的所有点都低于
c_min
的颜色1。例如:

df <- data.frame(x=rnorm(10), y=rnorm(10), z=c(-100, rnorm(8), 100))
ggplot(df, aes(x=x, y=y, col=z)) + geom_point() + 
  scale_color_gradient2(low="blue", mid="white", high="red")

df一个选项是设置刻度的限制,并将超过限制(超出界限/oob值)的任何东西挤压到最接近的极限:

ggplot(df,aes(x=x,y=y,col=z))+geom_点()
缩放颜色梯度2(低=“蓝色”、中=“白色”、高=“红色”,
极限=c(-3,3),oob=scales::squish)

另一个选项是手动设置位置(在重新缩放到[0-1]范围后),其中颜色应出现在
scale\u color\u gradient
中<代码>“蓝色”
和<代码>“红色”重复以给出该颜色的极端值(0,1)和重新缩放的-3/3(0.485/0.515)

ggplot(df,aes(x=x,y=y,col=z))+geom_点()
比例颜色梯度n(颜色=c(“蓝色”、“蓝色”、“白色”、“红色”、“红色”),
数值=c(0,0.485,0.5,0.515,1))

pal <- colorRampPalette(c("blue", "white", "red"))(17)
breaks <- seq(-3, 3, length.out=16)
cols <- pal[findInterval(df$z, breaks) + 1]
plot(df$x, df$y, pch=19, col=cols)

## or, in ggplot
ggplot(df, aes(x=x, y=y, col=factor(1:nrow(df)))) + 
   geom_point() + scale_color_manual(values=cols)