【问题标题】:Assign a color code for every unique string in multiple files - R为多个文件中的每个唯一字符串分配一个颜色代码 - R
【发布时间】:2018-05-31 08:01:58
【问题描述】:

我正在尝试创建一个规则,为每个唯一的字符串分配一个特定的颜色代码,以便在 ggplot2 中为不同的文件绘制图形。例如,如果我有两个制表符分隔的文件,file1.txtfile2.txt,如下所示:

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)的上述文件。在我的许多文件中,我有大约 3000 种颜色,我创建了一个调色板 (pal) 供使用

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

有没有一种方法可以确保我的许多文件中的所有序列都保持有序的字符串对和相应的十六进制颜色代码(即所有显示 AAGTGT 序列的文件都将具有该字符串的相同十六进制颜色代码)?值得注意的是,并非所有 3000 种颜色都出现在每个文件中。

谢谢!

【问题讨论】:

  • 没有人可以区分 3000 种颜色。即使不是所有 3000 种颜色都显示在一个图中,您最终可能会得到 10 种几乎无法区分的颜色。我不明白你在做什么。

标签: r colors color-palette


【解决方案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()

输出图:
请注意,Seq 使用的颜色相同,常见于 df1df2

#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))

【讨论】:

  • 很高兴它有帮助!
猜你喜欢
  • 1970-01-01
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
  • 2017-07-10
  • 2015-03-25
  • 1970-01-01
  • 1970-01-01
  • 2016-10-19
相关资源
最近更新 更多