Я хотел, чтобы мои условия были отмечены на тепловой карте, которую я делаю для DGE. Этот код:
mat <- assay(rld)[topVarGenes,]
condition = c("black", "orange")
names(condition) = c("Dark", "Light")
ann_colors = list(condition = condition)
pheatmap(mat, color = colorRampPalette(rev(brewer.pal(n = 7, name = "RdYlBu")))(24), annotation_colors = ann_colors[1], border_color = "grey60", fontsize = 12, scale = "row")
создает эту тепловую карту:
Но эта тепловая карта не имеет условий, помеченных над столбцами, как я хотел. Поэтому я попробовал этот код:
annotation <- data.frame(annotation)
pheatmap(mat, annotation = annotation, color = colorRampPalette(rev(brewer.pal(n = 7, name = "RdYlBu")))(24), border_color = "grey60", fontsize = 12, scale = "row")
, который почти работает, но не использует цвета, которые я хочу пометить условиями (образцы 1-3 являются "темными" условиями и должны быть помечены как черные, а образцы - 4-6 являются «светлыми» условиями и должны быть помечены оранжевым). Этот график также включает в себя прикольную метку столбца при условии для образца, который является избыточным, и я не знаю, как от него избавиться. Кроме того, data.frame (аннотация) - это лист Excel, в который я импортировал образцы и соответствующие условия.
Добавление обратно annotation_colors к коду:
pheatmap(mat, annotation = annotation, color = colorRampPalette(rev(brewer.pal(n = 7, name = "RdYlBu")))(24), annotation_colors = ann_colors, border_color = "grey60", fontsize = 12, scale = "row")
приводит к этой ошибке: Error in convert_annotations(annotation_col, annotation_colors) :
Factor levels on variable condition do not match with annotation_colors
Наконец, я попробовал это немного кода, который я нашел в посте переполнения стека, чтобы определить аннотацию, которая заставляет R использовать правильные цвета, но они не в правильном порядке для условий, потому что %% 2 == 0 заставляет его пометить каждый другой образец как «легкий», но я не могу думать ни о чем другом, чтобы сделать. Вот код:
annotation <- data.frame(condition = factor(1:6 %% 2==0, labels = c("Dark", "Light")))
Помощь с благодарностью!