改变ggplot上的颜色

时间:2014-05-07 00:59:56

标签: r ggplot2

如果我通过以下方式生成ggplot

 x <- rnorm( 10^3, mean=0, sd=1)
 y <- rnorm( 10^3, mean=0, sd=1)
 z=x^2+y^2
 df <- data.frame(x,y,z)
 ggplot(df)+geom_point(aes(x,y,color=z))

默认情况下,这是以蓝色刻度绘制的。如何组合不同的颜色来制作新的比例?

1 个答案:

答案 0 :(得分:7)

ggplot中设置颜色的方法几乎无限多,事实上很多都会让人感到困惑。这里有几个例子可以帮助您入门。请参阅文档hereherehere更多选项。 IMO this site提供了ggplot中色彩选项的精彩概述。

正如@rawr在评论中指出的那样,所有选项都涉及某些版本的scale_color_

scale_color_gradient(...)将颜色与色阶变量的低值和高值相关联,并在它们之间进行插值。

ggp <- ggplot(df)+geom_point(aes(x,y,color=z))
ggp + scale_color_gradient(low="red", high="blue")

scale_color_gradientn(...)将调色板作为参数(例如,颜色矢量)并在它们之间进行插值。可以手动定义调色板,也可以使用R中的众多工具之一定义调色板。例如,RColorBrewer包可以访问www.colorbrewer.org上的配色方案。

library(RColorBrewer)   # for brewer.pal(...)
ggp + scale_color_gradientn(colours=rev(brewer.pal(9,"YlOrRd")))

library(colorRamps)     # for matlab.like(...)
ggp + scale_color_gradientn(colours=matlab.like(10))

scale_color_gradient2(...)会产生不同的色阶,专为具有自然中点的数据而设计(您的示例并非如此......)。

ggp +
scale_color_gradient2(low="blue",mid="green",high="red",midpoint=5,limits=c(0,10))

这真的只是划伤了表面。例如,ggplot中有另一组工具来处理离散色标。