我ggplot
通过midpoint = 2.5
以下指定手动色阶;
#create dataframe
df <-data.frame(x = c(rnorm(300, 3, 2.5), rnorm(150, 7, 2)), # create random data
y = c(rnorm(300, 6, 2.5), rnorm(150, 2, 2)),
z = c(rnorm(300, 6, 2.5), rnorm(150, 2, 2)))
#plot
gg <-ggplot(df, aes(x=x, y=y, color=z)) +
geom_point() +
scale_color_gradient2(midpoint=2.5, low="red", mid="white",high="blue", space ="Lab")
,结果如下图;
在这里,我想在色标的最小边缘(即z值为min)设置更鲜艳(或更深)的红色(即#FF0000或rgb(255,0,0)min(df$z)[1] -3.718939
)。
在这种情况下,我不想移动midpoint = 2.5
。
你有什么解决办法吗?
我想像原始图一样在z最大值处保持蓝色鲜艳的色彩。由于第一个答案,我注意到trans =
in的存在scale_color_gradient2
。但是,我不知道如何解决我的问题。
考虑到您的样本,中点将数据分别分为25%和75%。
可以不使用带有三个颜色调用的scale_color_gradient2,而是可以使用带有四个颜色调用的scale_color_gradientn和白色作为第二种颜色(因为中间品脱刚好超过25%。
gg <-ggplot(df, aes(x=x, y=y, color=z)) +
geom_point() +
scale_color_gradientn(colors=c("red","white", "blue", "darkblue"), space ="Lab")
PS:您也可以尝试 colors=c("red","white", "lightblue", "blue")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句