如何约束ggplot2中的colorpalette

时间:2015-02-15 10:19:23

标签: r ggplot2 raster

从下图中,我想约束从绿色到红色(黄色部分)的过渡到红线。当z <1时我喜欢绿色,z> 1时我喜欢红色,而z = 1则是黄色。

library(ggplot2)

数据(仅用于说明情节)

x=seq(0,5,length=1e2)
y=seq(0,5,length=1e2)
#
df=expand.grid(x=x,y=y)
df$z=df$x*df$y

剧情

ggplot(data=df, aes(x=x,y=y,z=z,fill=z)) +
geom_raster()+  
stat_contour(breaks=1, size=1, colour="red") +
scale_fill_gradientn (colours=colorRampPalette (c ("green", "yellow","red")) (20))

Plot obtained from code

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

这是创建情节的一种方法。正如@CMichael指出的那样,可以使用函数scale_fill_gradient2。它允许基于三种颜色指定连续色标。

ggplot(data=df, aes(x = x, y = y, z = z, fill = z)) +
  geom_raster() +  
  stat_contour(breaks = 1, size = 1, colour = "red") +
  scale_fill_gradient2(low = "green", mid = "yellow", high = "red", midpoint = 1)