1. ホーム
  2. r

[解決済み] ggplot set scale_color_gradientn を手動で設定する。

2022-02-12 01:53:49

質問

次のようなデータフレームがあります。

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

で、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)から手動で間隔を選択し、好みの色(赤、黄、緑、薄、濃青)にするにはどうしたらよいでしょうか?色と色の間に滑らかなグラデーションがあるとかっこいいですが、重要ではありません。

どのように解決するのですか?

を使用することができます。 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)) 

<イグ