23

もしあれば、これには非常に簡単な解決策が必要だと思います。基本的に次のような 2 つの大きなデータフレームがあります。

> data1[1,]
      chromosome start    end      test ref position log2      p.value 
13600 Y          10199251 10200750 533  616 10200000 0.2181711 0.00175895   
...

> data2[1,]
      chromosome start    end      test ref position log2       p.value 
4080  Y          10197501 10202500 403  367 10200000 0.04113596 0.3149926   
...

このコードを使用して、2 つのデータフレームを同じグラフにプロットしています。

p <- ggplot() + geom_point(data=subset(data1, p.value >= glim[1]),
map=aes(x=position, y=log2, colour=p.value))
+ geom_point(data=subset(data2, p.value >= glim[1]), map=aes(x=position,
y=log2, colour=p.value))

単一のデータフレームをプロットしていたとき、「p.value」列の値に赤と白のグラデーションを使用していました。この行を使用して:

p <- p + scale_colour_gradient(limits=glim, trans='log10', low="red", 
high="white") 

中心的な問題は次のとおりです。2 つのデータフレームがある場合、data1 に 1 つのカラー グラデーションを設定し、data2 に別のカラー グラデーションを設定するにはどうすればよいですか? 以前の投稿で、2 つの異なるカラー スケールを使用することはできないと読みました (例: 最初に "low="、2 番目に "high=") が、この場合はまったく同じ種類のカラー スケールです。 (用語を混同していない場合)。構文は明らかに正しくありませんが、次のようなことをしたいと思います。

p <- p + scale_colour_gradient(limits=glim, trans='log10', low="red", 
high="white") 

p <- p + scale_colour_gradient(limits=glim, trans='log10', low="blue", 
high="white") 
4

2 に答える 2

26

まず、ggplot がこれを推奨しない理由は、プロットの解釈が難しい傾向があるためです。

ちょっとしたチートに頼ることで、2 つのカラー グラデーション スケールを取得できます。geom_point では、特定の形状 (21 から 25) が塗りつぶしと色の両方を持つことができます。それを利用して、「塗りつぶし」スケールのレイヤーと「カラー」スケールの別のレイヤーを作成できます。

# dummy up data
dat1<-data.frame(log2=rnorm(50), p.value= runif(50))
dat2<-data.frame(log2=rnorm(50), p.value= runif(50))

# geom_point with two scales
p <- ggplot() +
       geom_point(data=dat1, aes(x=p.value, y=log2, color=p.value), shape=21, size=3) +
       scale_color_gradient(low="red", high="gray50") +
       geom_point(data= dat2, aes(x=p.value, y=log2, shape=shp, fill=p.value), shape=21, size=2) +
       scale_fill_gradient(low="gray90", high="blue")
p

ここに画像の説明を入力

于 2013-08-21T06:43:49.250 に答える
21

これはかなり前のことですが、https://github.com/eliocamp/ggnewscaleをご覧ください。

この関数new_colour_scale()を使用して、それ以降のすべてに適用される新しいカラー スケールを開始できます。

于 2020-05-06T11:57:30.347 に答える