改变ggplot上的颜色

use*_*324 1 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))
Run Code Online (Sandbox Code Playgroud)

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

jlh*_*ard 7

设置颜色的方法几乎无限ggplot多,事实上很多都会让人感到困惑.这里有几个例子可以帮助您入门.见文档在这里,在这里,并在这里更多的选择.IMO 这个网站提供了很好的颜色选项概述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")
Run Code Online (Sandbox Code Playgroud)

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

library(RColorBrewer)   # for brewer.pal(...)
ggp + scale_color_gradientn(colours=rev(brewer.pal(9,"YlOrRd")))
Run Code Online (Sandbox Code Playgroud)

library(colorRamps)     # for matlab.like(...)
ggp + scale_color_gradientn(colours=matlab.like(10))
Run Code Online (Sandbox Code Playgroud)

scale_color_gradient2(...) 产生不同的色标,专为具有自然中点的数据而设计(您的示例不是......).

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

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