2017-10-11 3 views
1

私は統計的なテスト(遺伝子セット濃縮分析ですが、それは重要ではありません)に由来するデータを持っていますので、正の値と負の値の両方に正規分布する統計値のp値を取得します。scale_fill_gradient2の凡例を操作する

テストでは、いくつかのカテゴリーに実行されます。

set.seed(1) 
df <- data.frame(col = rep(1,7), 
       category = LETTERS[1:7], 
       stat.sign = sign(rnorm(7)), 
       p.value = runif(7, 0, 1), 
       stringsAsFactors = TRUE) 

が、私は彼らのdf$p.valueによってdf$categoryを乗じたgeom_tileggplotようにIカラーコードでこれらのデータを提示したい自分df$stat.sign(すなわち、の兆候統計)

私が最初 df$p.valuelog10を取ることについては

df$sig <- df$stat.sign*(-1*log10(df$p.value)) 

その後、私はdf$sig:

library(dplyr) 
df <- rbind(dplyr::filter(df, sig < 0)[order(dplyr::filter(df, sig < 0)$sig), ], 
      dplyr::filter(df, sig > 0)[order(dplyr::filter(df, sig > 0)$sig), ]) 

の各記号のためdf$sigdforderそして、私はそれをggplot

library(ggplot2) 
df$category <- factor(df$category, levels=df$category) 

ggplot(data = df, 
     aes(x = col, y = category)) + 
    geom_tile(aes(fill=sig)) + 
    scale_fill_gradient2(low='darkblue', mid='white', high='darkred') + 
    theme_minimal() + 
    xlab("") + ylab("") + labs(fill="-log10(P-Value)") + 
    theme(axis.text.y = element_text(size=12, face="bold"), 
     axis.text.x = element_blank()) 
私に与え

enter image description here

df$sigの値はその絶対値で表されているが、他のすべてが変わらないことをlegendなどを操作する方法はありますか?そうすれば、私はまだ赤と青の色合いの両方を取得し、私が望む順序を維持する。

答えて

1

あなたが他の連続うろこのように、ggplotのマニュアル、scale_fill_gradient2をチェックすると、そのlabels引数のために、次のいずれかを受け付けます

transofrmationオブジェクトに対して計算デフォルトのラベルのラベルなし
  • waiver()ため
    • NULL
    • ラベルを付ける文字ベクトル(breaksと同じ長さでなければならない)
    • br入力としてeaks、あなたが唯一の伝説の値は、絶対にしたいので、私は(あなたが伝説のカラーバーのデフォルトの区切りに満足していると仮定し、出力

    として-0.1 0.1で刻みで0.4にしたラベルを返します。 )、本当に必要なのは、ラベルを操作する関数を追加することだけです。

    I.e.これに代えて:

    scale_fill_gradient2(low = 'darkblue', mid = 'white', high = 'darkred') + 
    

    使用この:

    scale_fill_gradient2(low = 'darkblue', mid = 'white', high = 'darkred', 
            labels = abs) + 
    

    plot

  • 1

    私はあなたが探しているものを理解したとは確信していません。凡例内のというラベルをというラベルに変更することはできませんでしたか?ラベルを変更したい場合はとlabelsscale_fill_gradient2()で与えます。

    ggplot(data=df,aes(x=col,y=category)) + 
         geom_tile(aes(fill=sig)) + 
         scale_fill_gradient2(low='darkblue',mid='white',high='darkred', 
              breaks = order(unique(df$sig)), 
              labels = abs(order(unique(df$sig)))) + 
         theme_minimal()+xlab("")+ylab("")+labs(fill="-log10(P-Value)") + 
         stat_bin_2d(geom = 'text', aes(label = sig), colour = 'black', size = 16) + 
         theme(axis.text.y=element_text(size=12,face="bold"),axis.text.x=element_blank()) 
    

    あなたがsizecolour引数を与えたいと思うかもしれません:あなたは多分あなたは、このようなstat_bin_2d()を積み重ねてみてください、値を表示するフィギュア内部のテキストを表示することができます探しているものについては

    ggplot(data=df,aes(x=col,y=category)) + 
        geom_tile(aes(fill=sig)) + 
        scale_fill_gradient2(low='darkblue',mid='white',high='darkred', 
             breaks = order(unique(df$sig)), 
             labels = abs(order(unique(df$sig)))) + 
        theme_minimal()+xlab("")+ylab("")+labs(fill="-log10(P-Value)") + 
        theme(axis.text.y=element_text(size=12,face="bold"),axis.text.x=element_blank()) 
    

    いくつか試みます。