2017-12-18 4 views
0

異なるファイルのggplot2で、グラフ化の目的で一意の文字列ごとに特定のカラーコードを割り当てるルールを作成しようとしています。たとえば、私は2つのタブ区切りのファイルを持っている場合は、FILE1.TXTFILE2.TXT次のようになり、その:複数のファイルで一意の文字列ごとにカラーコードを割り当てる - R

FILE1.TXT

Freq Seq  
90 AAGTGT 
3  AAGTGG 
3  AAGTCC 
2  AATTTT 
2  TTTTTT 

FILE2.TXT

Freq Seq 
91 AAGTGT 
4  AAGTGG 
2  AAGTCC 
2  CCCCCC 
1  TTTTTT 

上記のファイルには、6つの差分のために合計6つの色が使用されます(AAGTGT、AAGTGG、AAGTCC、CCCCCC、TTTTTT、AATTTT)を含む。私の多くのファイル間、私は私が

pal<-c(randomColor(count=2951)) 

を使用するためのパレット(pal)を作成しました〜3000色を持っている私の多くのファイルの中の全ての配列が文字列の順序対を維持することを確実にする方法はありますし、対応する16進カラーコード(すなわち、AAGTGTシーケンスを示すすべてのファイルは、その文字列に対して同じ16進数のコードを持つことになります)?注目すべきは、各ファイルに3000色すべてが表示されているわけではありません。

ありがとうございます!

+2

3000色を区別することができる方法を誰もがありませんdf2でも同じです。 1つのプロットで3000色すべてが表現されているわけではありませんが、区別がつかない10色で終わることがあります。私はあなたがしようとしていることを理解していません。 –

答えて

1

希望すると便利です。

library(ggplot2) 
library(randomcoloR) 

#build a pallete mapping using 'Seq' column's value in all available dataframes 
set.seed(123) 
pal <- c(randomColor(count=6)) 
pal_seq_mapping <- data.frame(sequence=unique(c(as.character(df1$Seq),as.character(df2$Seq))), color=pal) 

#example plot on 'df1' dataframe 
ggplot(df1, aes(x=Seq, y=Freq)) + 
    geom_bar(stat="identity", fill=pal_seq_mapping[match(df1$Seq, pal_seq_mapping$sequence),"color"]) + 
    theme_bw() 

#example plot on 'df2' dataframe 
ggplot(df2, aes(x=Seq, y=Freq)) + 
    geom_bar(stat="identity", fill=pal_seq_mapping[match(df2$Seq, pal_seq_mapping$sequence),"color"]) + 
    theme_bw() 

出力プロット:
注使用する色はdf1で共通Seq

Output plot

#sample data 
> dput(df1) 
structure(list(Freq = c(90L, 3L, 3L, 2L, 2L), Seq = structure(c(3L, 
2L, 1L, 4L, 5L), .Label = c("AAGTCC", "AAGTGG", "AAGTGT", "AATTTT", 
"TTTTTT"), class = "factor")), .Names = c("Freq", "Seq"), class = "data.frame", row.names = c(NA, 
-5L)) 
> dput(df2) 
structure(list(Freq = c(91L, 4L, 2L, 2L, 1L), Seq = structure(c(3L, 
2L, 1L, 4L, 5L), .Label = c("AAGTCC", "AAGTGG", "AAGTGT", "CCCCCC", 
"TTTTTT"), class = "factor")), .Names = c("Freq", "Seq"), class = "data.frame", row.names = c(NA, 
-5L)) 
+0

これは非常に役に立ちます@Prem、ありがとう! – Matt

+0

助けてくれてうれしい! – Prem

関連する問題