ggplot手动设置scale_color_gradientn

use*_*998 13 gradient r colors ggplot2

我有这样的数据框

BP        R2      LOG10
96162057 0.2118000 2.66514431
96162096 0.0124700 0.31749391
96162281 0.0008941 0.07012148
96163560 0.5011000 2.48505399
96163638 0.8702000 3.37778598
Run Code Online (Sandbox Code Playgroud)

我想在BP10上绘制BP,并用R2对点进行着色.R2是0-1的连续值.

myplot <- read.cvs("mytable.csv",head=TRUE)
attach(myplot)
ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point() 
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是我想以手动选择的间隔和颜色显示R2颜色,如下所示(如果我有离散值).

ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point() + 
      scale_color_manual(breaks= c("1","0.8","0.6","0.4","0.2","0"), 
                values = c("red","yellow","green","lightblue","darkblue"))
Error: Continuous value supplied to discrete scale
Run Code Online (Sandbox Code Playgroud)

这看起来很漂亮,但我宁愿设置我自己的颜色.

ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point(shape=1) + 
               scale_colour_gradientn(colours = rainbow(10))
Run Code Online (Sandbox Code Playgroud)

那么,我怎样才能从连续值(1-0.8,0.8-0.6,0.6-0.4,0.4-0.2,0.2-0)手动选择间隔,并根据我的喜好(红色,黄色,绿色,浅色,深蓝色)进行着色?颜色之间的平滑渐变很酷,但并不重要.

Did*_*rts 15

您可以使用scale_colour_gradientn()然后提供自己的colours=values=.值将给出每种颜色的间隔.

ggplot(myplot,aes(BP,LOG10, color = R2)) + geom_point() + 
  scale_colour_gradientn(colours = c("red","yellow","green","lightblue","darkblue"),
                         values = c(1.0,0.8,0.6,0.4,0.2,0)) 
Run Code Online (Sandbox Code Playgroud)

gradientn图表示例


Tje*_*ebo 11

4年后对这篇文章发表评论:重要的是要注意"值"将变量值映射在0和1,0之间,0是最低值,1是最高值.在这个例子中,它巧合地适应变量的值0到1.