Различное цветовое изображение в петле, R - PullRequest
0 голосов
/ 12 июня 2019

Я создал цикл для итеративной генерации некоторых круговых диаграмм в R ... это основная идея кода: я читаю каждый объект (список) в .env, который соответствует моему шаблону (cond_genes_)), для каждого names() этого объекта я создаю новый data.frame со своими значениями, а для каждой строки этого нового data.frame я ищу в другом согласованном объекте (также из .env), добавляя новый столбец с присутствиемили отсутствие (1/0).Наконец, столбцы суммируются на круговой диаграмме.

Моя проблема в том, что цвета не одинаковы для каждого сектора круговой диаграммы, несмотря на то, что я создал объект ab с этим цветовым условием соответствия.

isec_names <- sort(unique(unlist(sapply(ls(pattern = "isec"), function(x) (names(eval(parse(text = x))))))))
i_col <- RColorBrewer::brewer.pal(n = length(isec_names), name = 'Set3') 
head(i_col)
# BM PCs                    BM PCs (clon 2)                        BM PCs&CTCs 
# "#8DD3C7"                          "#FFFFB3"                          "#BEBADA" 
# BM PCs&CTCs&BM PCs (clon 2)                 BM PCs&CTCs&Plasm. BM PCs&CTCs&Plasm.&BM PCs (clon 2) 
# "#FB8072"                          "#80B1D3"                          "#FDB462" 
# BM PCs&Plasm.                               CTCs                        CTCs&Plasm. 
# "#B3DE69"                          "#FCCDE5"                          "#D9D9D9" 
# Plasm. 
# "#BC80BD" 

Это код:

for(k in ls(pattern = "cond_genes_")){
  y <- eval(parse(text = k))

  for(j in names(y)){
    u2 <- data.frame(gene = y[[j]])

    # search its match-dataframe in .Env
    y2 <- eval(parse(text = grep(gsub("cond_genes_", "", k), ls(pattern = "isec"), value = T)))

    for(i in 1:length(y2)){
      aux <- as.vector(unlist(y2[i]))

      u2[,ncol(u2)+1] <- sapply(u2$gene, function(x) ifelse(x %in% aux, 1, 0))
    }
    cs <- colSums(u2[,2:ncol(u2)])

    png("pieChart_a.png"))
    labels <- paste0(names(cs), "\n", cs," (", round(prop.table(cs)*100, digits = 1), "%)")
    pie2(cs, main = paste0(gsub("cond_genes_", "", k), ": ", j), labels = labels, 
         border = "gray56", col = i_col)
    dev.off()
  }
}

А это те графики, которые окрашиваются по-разному (например, сектор "Плазма"), я не знаю причину.

enter image description here

Есть идеи, что я делаю не так, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...