首页 > 解决方案 > 如何将矩阵子组链接到颜色列表?在 R?

问题描述

因此,我有一个从 1 到 6 的数字子组,我想将其链接到颜色列表,但似乎无法正确链接它们。

我的代码看起来像子组矩阵

          PCA_Model    Subgroup
ACTL6A    Numeric,4    3       
ADAM9     Numeric,16   4       
ADAMTS1   Numeric,4    3       
ADCY7     FALSE        3       
AIMP2     Numeric,8036 3       
ALKBH7    Numeric,4    3       
ALOX5AP   Numeric,16   1       
AMPD3     Numeric,4    1       
APITD1    FALSE        1   

我正在尝试使用这段代码链接它们

PCA_Model <- prcomp(t(K_means_Model$centers))
samples_names <- K_means_Model$cluster
# Bind sample names to their subgroup
pca_matrix <- cbind(PCA_Model, "Subgroup"=samples_names)
# Link dataframe to color
colours <- as.character(factor(pca_matrix[,"Subgroup"], levels = paste0("C", 1:6),labels = c("blue", 
"red", "yellow", "green", "black", "pink")))

但是每次我尝试链接颜色对象时都会产生 na 值。有人能提出更好的方法吗?

所有帮助将不胜感激

标签: rmatrix

解决方案


我会做一些事情

df <- data.frame(
     PCA_model = c("Numeric,4","Numeric,16","Numeric,5","Numeric,1","Numeric,1","Numeric,3","Numeric,64","Numeric,123"),
     Subgroup= c(3,4,3,3,1,2,5,6))

> df
    PCA_model Subgroup
1   Numeric,4        3
2  Numeric,16        4
3   Numeric,5        3
4   Numeric,1        3
5   Numeric,1        1
6   Numeric,3        2
7  Numeric,64        5
8 Numeric,123        6

# generate the vector of colours
colo <- c(brewer.pal(6,"Set3"))   # using RColorBrewer (library(RColorBrewer))
colo <- c(brewer.pal(length(unique(df$Subgroup)),"Set3")) # if you don't know how many colours you need
colo <- c("blue","red", "yellow", "green", "black", "pink")) # like you did
names(col) <- unique(df$Subgroup)

> colo
    3         4         1         2         5         6 
"#8DD3C7" "#FFFFB3" "#BEBADA" "#FB8072" "#80B1D3" "#FDB462" 

然后,您可以传递colo给 ggplot 或其他库,颜色将遵循df$Subgroup


推荐阅读