2016-09-07 11 views
0

私はggplotを使って値をプロットしようとしていますが、ggplotは両方の軸を再構築し続けます。以下は私の入力ファイルの様子のスナップショットです。私は50以上のサンプルを持っています。Rプログラム - x軸とy軸の両方でggplotを並べ替えるのを避ける方法

INPUT.txt 

Sample  Effect    Gene 
TCGA-D1-A17D stop gained   ACE 
TCGA-B5-A0K4 stop gain    CBLC  
TCGA-AP-A052 frameshift variant BRIP1 

ここでは私のRコードは

それが必要とどのように軸

の両方を並べ替えすることなく、私の入力ファイルに従って図を作成するので、私のx軸すなわち

library(reshape) 
library(ggplot2) 
all_data<- read.table(INPUT.txt", sep= "\t", header = T) 
all_data.m <- melt(all_data) 

#here's my attempt to try to sort the figure , but i can only sort according to just one axis 

all_data.m$Gene <- factor(all_data.m$Gene, levels = all_data.m$Gene[order(all_data.m$Sample)]) 

cbPalette <- c("violetred", "yellowgreen", "dodgerblue3", "lightcyan4", "cyan2") 
p <- ggplot(all_data.m, aes(x=Sample , y= Gene)) + geom_tile(aes(Sample, fill = Effect))+ scale_fill_manual(values=cbPalette) 
p <- p + theme(axis.text.x = element_text(angle=90, vjust=0.5, size=65, face = "bold"), axis.text.y = element_text(size=65, face = "bold")) 
p <- p + theme(axis.ticks = element_line(size = 1)) 
p <- p + theme(axis.line = element_line(size = 5)) 
p <- p+ theme(legend.text = element_text(size = 80, face = "bold")) 
p <- p+ theme(legend.key.size = unit(5, "cm")) 
p <- p + theme(axis.title=element_text(size=80,face="bold")) 
print(p) 

を「ヒートマップ」を作成しますTCGA-D1-A17D、TCGA-B5-A0K4、TCGA-AP-A052が順になります。

そして、私のy軸はACE、CBLC、BRIP1

答えて

0

手動でx軸の順序を上書きする場合は、あなたがしたい順番にレベルを設定する必要があります:

all_data.m$Sample <- factor(all_data.m$Sample, levels = c("TCGA-D1-A17D", "TCGA-B5-A0K4", "TCGA-AP-A052")) 

あなたが使用することができソートすることによって、あなたが望む順序を得ることができる場合:

all_data.m$Gene <- factor(all_data.m$Gene, levels = sort(all_data$Gene)) 

をあなたは逆の順序がsort()機能を中心にrev()をラップしたい場合。

ストリングを使用しているので、非直感的なRの動作を避けるために、スクリプトをoptions(stringsAsFactors = FALSE)で開始することを確認することもできます。

+0

入力ファイルはスナップ写真だけであることに注意してください。私は50以上のサンプルを持っていますので、1つ1つ入力することは実用的ではありません。 –

+0

ソートを含むソリューションが含まれています。注文が本当にカスタム(非アルファベット)の場合は、それを入力するだけで私の知る限りのオプションです。 –

1

ファクタのレベルがデータセットに表示される順番になるように思えます。データセット内の変数の値をuniqueにすることで、レベルの順序を設定できます。

例:

all_data.m$Gene = factor(all_data.m$Gene, levels = unique(all_data.m$Gene)) 

新しいレベル

Levels: ACE CBLC BRIP1 

新しいforcatsパッケージには、このような作業がさらに容易になります。このパッケージは、プロットのレベルの順序を変更するという非常に一般的な作業を含む要因を扱うように設計されています。

データセットに表示される順序でレベルを並べ替えるには、fct_inorderを使用します。

library(forcats) 
all_data$Sample = fct_inorder(all_data$Sample) 

Levels: TCGA-D1-A17D TCGA-B5-A0K4 TCGA-AP-A052 

プロットの軸は、因子の順序に従います。

注意y軸は左下隅の最初のレベルから開始し、次にy軸を上にしてプロットします。最初のレベル、ACEを左上隅に置きたい場合は、fct_inorder(rev(all_data.m$Gene))またはfct_rev(fct_inorder(all_data.m$Gene))のようにすることができます。

関連する問題