2017-12-18 16 views
0

다른 파일에 대한 ggplot2의 그래프 작성을 위해 모든 고유 문자열에 특정 색상 코드를 할당하는 규칙을 만들려고합니다. 예를 들어, I는 다음과 같이 두 개의 탭으로 구분 된 파일 은 File2.txtfile2.txt있는 경우 :여러 파일의 모든 고유 문자열에 색상 코드 지정 - R

은 File2.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 가지 색상으로 위의 파일에 사용됩니다 nt 서열 (AAGTGT, AAGTGG, AAGTCC, CCCCCC, TTTTTT, AATTTT)을 포함한다. 내 많은 파일에 걸쳐, 내 많은 파일들 모든 시퀀스는 문자열의 순서쌍을 유지할 수 있도록하는 방법이 있나요 내가

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

을 사용하는 팔레트 (pal)을 만들었습니다 ~ 3000 개 색상을 가지고 해당 헥스 색상 코드 (즉, AAGTGT 시퀀스를 보여주는 모든 파일은 해당 문자열에 대해 동일한 16 진수 코드를 갖습니다)? 각 파일에는 3000 가지 색상이 모두 표시되는 것은 아닙니다.

감사합니다.

+2

3000 개 색상을 구별 할 수있는 방법의 사람이 없습니다 df2에 대한 동일합니다. 모든 음영이 한 음모로 표현되지는 않더라도 거의 구별 할 수없는 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