pheatmap annotation_colors не использует указанную палитру - PullRequest
0 голосов
/ 28 апреля 2020

Я сделал тепловую карту, включая цвета для аннотирования строк, используя скрипт из здесь . В настоящее время мой сценарий таков:

cols <- colorRampPalette(brewer.pal(9, "Paired"))
mycolors <- cols(length(unique(merged_DE_peaks_cut_annotation_type$V10)))
names(mycolors) <- unique(merged_DE_peaks_cut_annotation_type$V10)
mycolors <- list(mycolors = mycolors)
anno <- as.data.frame(merged_DE_peaks_cut_annotation_type$V10])
rownames(anno) <- rownames(merged_DE_peaks_cut_annotation_type)
colnames(anno) <- "Annotation"
pheatmap(merged_DE_peaks_cut_annotation_type[, c(3:6)],
         color = colorRampPalette(rev(brewer.pal(n = 7, name = "RdYlBu")))(100),
         annotation_row = anno,
         annotation_colors = mycolors[1],
         cluster_rows = TRUE,
         cluster_cols = FALSE,
         cellheight = 1,
         cellwidth = 80,
         border_color=NA,
         show_rownames = F,
         main="H3K27me3 log2(RPKM) at promoters of >1.5 FC downreg BA1 genes")

Я не получаю никаких ошибок, но цвета, сгенерированные для аннотаций строк, не указаны в mycolors. Похоже, они просто используются по умолчанию, независимо от того, включаю я annotation_colors = mycolors[1] или нет, цвета аннотации на графике не имеют значения. mycolors выглядит следующим образом, и коды # меняются, когда я изменяю палитру, поэтому кажется, что по какой-то причине он просто не вызывается должным образом во время графика pheatmap.

> mycolors[1]
$mycolors
                           None lncg contained in pcg antisense         bidirectional antisense 
                      "#A6CEE3"                       "#1F78B4"                       "#B2DF8A" 
    lncg contained in pcg sense     head-head overlap antisense     tail-tail overlap antisense 
                      "#33A02C"                       "#FB9A99"                       "#E31A1C" 
                  overlap sense     pcg contained in lncg sense pcg contained in lncg antisense 
                      "#FDBF6F"                       "#FF7F00"                       "#CAB2D6" 

Любая помощь очень ценится, спасибо!

1 Ответ

0 голосов
/ 28 апреля 2020

В случае, если кто-то сталкивается с той же проблемой, код ниже теперь работает. Имя списка mycolors должно совпадать с именами df, использованными для аннотации.

anno <- as.data.frame(merged_DE_peaks_cut_annotation_type$V10)
rownames(anno) = rownames(merged_DE_peaks_cut_annotation_type)
colnames(anno) <- "V10"
cols <- colorRampPalette(brewer.pal(9, "Set3"))
mycolors <- cols(length(unique(anno$V10)))
names(mycolors) <- unique(anno$V10)
mycolors <- list(V10 = mycolors)
...