问题描述
R scale_color_gradient的ggplot2中有一个函数,您可以在设定的限制内指定“低”颜色和“高”颜色,并根据该比例为数字着色。 / p>
例如
scale_color_gradient(low="red",high="blue",limits = c(0,1))
将颜色数字= 0表示红色,数字= 1表示蓝色,并且介于两者之间的数字是介于红色和蓝色之间的颜色(由数字决定颜色)。
我的问题是-给定一个数字(例如0.5),是否可以基于相同的比例为该数字分配颜色?
解决方法
就像其他人提到的那样,您可以使用scale_color_gradientn()
指定n
种颜色的渐变并创建自己的渐变。您可以在函数上查看the documentation以获得更多信息,但这是一个有效的示例。
library(ggplot2)
set.seed(1234)
df <- data.frame(
x=1:200,y=rnorm(200,1,0.2),cols=sample(1:10,200,replace = TRUE)
)
p <- ggplot(df,aes(x,y,color=cols)) + geom_point()
p + scale_color_gradientn(colors=c('blue','green','yellow','red'))
这看起来不错,但是如果您想要(如您在案例中所述)为颜色指定一个特定位置该怎么办?在这种情况下,假设我们希望df$cols==5.0
为黄色。
您可以通过为values=
参数提供向量来实现。但是,有一点窍门在文档中并不明显。 values=
参数需要一个向量来表示您的每个colors=
的位置,其范围为从0到1 。请注意,df$cols
的范围是0到10,这意味着df$cols==5.0
用values=0.5
表示。
p + scale_color_gradientn(
colors=c('blue','red'),values=c(0,0.2,0.5,1)
)