2013-08-28 6 views
6

私はこのggplotセットを手動

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 

ようなデータフレームを有するscale_color_gradientn及びIはLOG10に対してBPをプロットし、そしてR2により点を着色します。 R2は0-1の連続値です。

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

これまでのところ、とても良いです。しかし、私は離散値を持っていた場合、このような手動で選択した間隔と色で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 

これはかなり見えますが、私はむしろ色を自分自身に設定したいと思います。だから、

ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point(shape=1) + 
       scale_colour_gradientn(colours = rainbow(10)) 

、私は手動で連続的な値(1から0.8、0.8から0.6、0.6から0.4、0.4から0.2、0.2から0)から間隔を選択して、自分の好みに合わせて、それらを色付けする方法(赤、黄、緑、光、ダークブルー)?色の間の滑らかな勾配はクールですが、重要ではありません。

答えて

7

scale_colour_gradientn()を使用して、colours=values=をご用意ください。値は各色の間隔を与えます。 4年後

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)) 

enter image description here

+0

ありがとうDidzis、完全にそれを解決する! グラデーションなしのソリューションもありますか?1-0.8 =赤、0.8-0.6 =黄色などのすべての値がありますか? – user2724998

+0

次に、cut()関数を使用して間隔でデータを分割し、それらの間隔を離散値として使用する必要があります。 –

+0

もう一度ありがとう! – user2724998

3

この投稿へのコメント:「値が」0最大値と最小1は、0と1の間にあなたの変数の値をマッピングすることに注意することが重要です。この例では、同時に0〜1の変数の値に適合します(ナンセンスを教えてはいけないと思いますが、少なくとも私の小さな経験ではこれがそうです)