[英]R package circlize: circos heatmap colors not showing up
I am trying to create a circular plot using circlize package. When using hex color codes, my plot does not show up anything but when I use actual color names, it shows.我正在尝试使用 circlize package 创建一个循环 plot。当使用十六进制颜色代码时,我的 plot 没有显示任何内容,但当我使用实际颜色名称时,它会显示。 Why is that?
这是为什么?
Code:代码:
suppressPackageStartupMessages({
library(tidyverse)
library(circlize)
})
# input data
dput(annot)
structure(list(Case_type = c("Initial CNS Tumor", "Initial CNS Tumor",
"Initial CNS Tumor", "Initial CNS Tumor", "Initial CNS Tumor",
"Initial CNS Tumor", "Initial CNS Tumor", "Initial CNS Tumor",
"Initial CNS Tumor", "Initial CNS Tumor", "Initial CNS Tumor",
"Initial CNS Tumor", "Initial CNS Tumor", "Initial CNS Tumor",
"Initial CNS Tumor", "Initial CNS Tumor", "Initial CNS Tumor",
"Initial CNS Tumor", "Initial CNS Tumor", "Initial CNS Tumor",
"Initial CNS Tumor", "Initial CNS Tumor", "Initial CNS Tumor",
"Initial CNS Tumor", "Initial CNS Tumor", "Initial CNS Tumor",
"Initial CNS Tumor", "Initial CNS Tumor", "Initial CNS Tumor",
"Initial CNS Tumor", "Initial CNS Tumor", "Initial CNS Tumor",
"Initial CNS Tumor", "Initial CNS Tumor", "no evidence of disease",
"no evidence of disease", "no evidence of disease", "Progressive",
"Progressive", "Progressive", "Progressive", "Progressive", "Progressive",
"Progressive", "Progressive", "Progressive", "Progressive", "Recurrence",
"Recurrence", "Recurrence", "Recurrence", "Recurrence", "Recurrence",
"Recurrence", "Recurrence")), row.names = c("15635-32", "15635-37",
"15635-38", "15635-42", "15635-43", "15635-53", "15635-58", "15635-60",
"15635-63", "15635-70", "15635-75", "15635-80", "15635-87", "15635-100",
"15635-108", "15635-132", "15635-134", "15635-135", "15635-2",
"15635-7", "15635-11", "15635-145", "15635-150", "15635-154",
"15635-161", "15635-169", "15635-170", "15635-187", "15635-197",
"15635-214", "15635-228", "15635-225", "15635-234", "15635-239",
"15635-251", "15635-246", "15635-254", "15635-182", "15635-45",
"15635-46", "15635-68", "15635-90", "15635-101", "15635-127",
"15635-1", "15635-148", "15635-156", "15635-29", "15635-31",
"15635-215", "15635-81", "15635-120", "15635-129", "15635-158",
"15635-279"), class = "data.frame")
# split into 4 categories
split <- factor(annot$Case_type)
circos.clear()
# does not work with the hex color codes
col_fun1 <- list('Initial CNS Tumor' = '#59acff',
'Recurrence' = '#ffac59',
'Progressive' = '#ffff59',
'no evidence of disease' = '#acff59')
circos.par(start.degree = 30, gap.degree = 1, points.overflow.warning = FALSE)
circos.heatmap(annot,
split = split,
col = col_fun1,
track.height = 0.4,
bg.border = "gray50",
show.sector.labels = T)
circos.clear()
When I use non-hex color names, it works:当我使用非十六进制颜色名称时,它有效:
# this works
col_fun2 <- list('Initial CNS Tumor' = 'yellow',
'Recurrence' = 'blue',
'Progressive' = 'green',
'no evidence of disease' = 'orange')
circos.par(start.degree = 30, gap.degree = 1, points.overflow.warning = FALSE)
circos.heatmap(annot,
split = split,
col = col_fun2,
track.height = 0.4,
bg.border = "gray50",
show.sector.labels = T)
circos.clear()
According to the docs, when describing the argument col
根据文档,在描述参数
col
时
If the values are characters, the color should be a named color vector.
如果值是字符,则颜色应该是命名的颜色向量。
Whereas you are passing a list rather than a named vector.而您传递的是列表而不是命名向量。 So if you
unlist
col_fun1
(or create it with c()
instead of list()
), you get因此,如果您取消
col_fun1
unlist
或使用c()
而不是list()
创建它),您会得到
circos.par(start.degree = 30, gap.degree = 1, points.overflow.warning = FALSE)
circos.heatmap(annot,
split = split,
col = unlist(col_fun1),
track.height = 0.4,
bg.border = "gray50",
show.sector.labels = T)
circos.clear()
The puzzle for me is why the first version works, not why the second one doesn't.令我困惑的是为什么第一个版本有效,而不是为什么第二个版本无效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.