在函数中使用 circlize::draw.sectors
Using circlize::draw.sectors inside a function
我想使用 circlize
包制作一个 RGB 配色方案。首先,我试着做一个函数,这样我只需要输入颜色和扇区,函数就会完成工作
代码如下:
colorpallete <- function(color, x){
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = x),
get.cell.meta.data("cell.end.degree", sector.index = x),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 3),
col = adjustcolor(col = color, alpha.f = 0.2))
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = x),
get.cell.meta.data("cell.end.degree", sector.index = x),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 2),
col = adjustcolor(col = color, alpha.f = 0.2))
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = x),
get.cell.meta.data("cell.end.degree", sector.index = x),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 1),
col = adjustcolor(col = color, alpha.f = 0.2))
}
circos.initialize(sectors, xlim = c(0, 1))
for(i in 1:3) {
circos.track(ylim = c(0, 1))
}
colset = (c('blue', 'cyan', 'green', 'yellow', 'red', 'violet'))
sectors = letters[1:6]
colorpallete(colset, sectors)
当我尝试 运行 代码时,returns 出现以下错误:
Error: Length of `sector.index` should only be 1.
如何让函数对应每个列表,比如我调用函数时,只调用'blue'和'a',然后调用'cyan'和'b',等等
非常感谢您
更新:我设法 运行 函数:
colorpallete <- function(sectors, color){
circos.initialize(sectors, xlim = c(0, 1))
for(i in 1:3) {
circos.track(ylim = c(0, 1))
}
for(i in 1:6){
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = sectors[i]),
get.cell.meta.data("cell.end.degree", sector.index = sectors[i]),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 3),
col = adjustcolor(col = color[i], alpha.f = 0.2))
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = sectors[i]),
get.cell.meta.data("cell.end.degree", sector.index = sectors[i]),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 2),
col = adjustcolor(col = color[i], alpha.f = 0.2))
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = sectors[i]),
get.cell.meta.data("cell.end.degree", sector.index = sectors[i]),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 1),
col = adjustcolor(col = color[i], alpha.f = 0.2))
} circos.clear()}
sectors = letters[1:6]
colset = (c('blue', 'cyan', 'green', 'yellow', 'red', 'violet'))
colorpallete(sectors, colset)
自定义一组扇区和颜色(不必是 6 个)
colorpallete <- function(sectors, color){
if(length(sectors) != length(color)){
print("Error: sectors should have the same length as color")
} else {
circos.initialize(sectors, xlim = c(0, 1))
for(i in 1:3) {
circos.track(ylim = c(0, 1))
}
for(i in 1:length(sectors)){
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = sectors[i]),
get.cell.meta.data("cell.end.degree", sector.index = sectors[i]),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 3),
col = adjustcolor(col = color[i], alpha.f = 0.2))
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = sectors[i]),
get.cell.meta.data("cell.end.degree", sector.index = sectors[i]),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 2),
col = adjustcolor(col = color[i], alpha.f = 0.2))
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = sectors[i]),
get.cell.meta.data("cell.end.degree", sector.index = sectors[i]),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 1),
col = adjustcolor(col = color[i], alpha.f = 0.2))
}
circos.clear()
}}
sectors = letters[1:4]
colset = (c('darkblue', 'blue', 'darkred', 'red'))
colorpallete(sectors, colset)
当然,sectors
和colset
需要长度一样
我想使用 circlize
包制作一个 RGB 配色方案。首先,我试着做一个函数,这样我只需要输入颜色和扇区,函数就会完成工作
代码如下:
colorpallete <- function(color, x){
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = x),
get.cell.meta.data("cell.end.degree", sector.index = x),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 3),
col = adjustcolor(col = color, alpha.f = 0.2))
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = x),
get.cell.meta.data("cell.end.degree", sector.index = x),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 2),
col = adjustcolor(col = color, alpha.f = 0.2))
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = x),
get.cell.meta.data("cell.end.degree", sector.index = x),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 1),
col = adjustcolor(col = color, alpha.f = 0.2))
}
circos.initialize(sectors, xlim = c(0, 1))
for(i in 1:3) {
circos.track(ylim = c(0, 1))
}
colset = (c('blue', 'cyan', 'green', 'yellow', 'red', 'violet'))
sectors = letters[1:6]
colorpallete(colset, sectors)
当我尝试 运行 代码时,returns 出现以下错误:
Error: Length of `sector.index` should only be 1.
如何让函数对应每个列表,比如我调用函数时,只调用'blue'和'a',然后调用'cyan'和'b',等等
非常感谢您
更新:我设法 运行 函数:
colorpallete <- function(sectors, color){
circos.initialize(sectors, xlim = c(0, 1))
for(i in 1:3) {
circos.track(ylim = c(0, 1))
}
for(i in 1:6){
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = sectors[i]),
get.cell.meta.data("cell.end.degree", sector.index = sectors[i]),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 3),
col = adjustcolor(col = color[i], alpha.f = 0.2))
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = sectors[i]),
get.cell.meta.data("cell.end.degree", sector.index = sectors[i]),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 2),
col = adjustcolor(col = color[i], alpha.f = 0.2))
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = sectors[i]),
get.cell.meta.data("cell.end.degree", sector.index = sectors[i]),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 1),
col = adjustcolor(col = color[i], alpha.f = 0.2))
} circos.clear()}
sectors = letters[1:6]
colset = (c('blue', 'cyan', 'green', 'yellow', 'red', 'violet'))
colorpallete(sectors, colset)
自定义一组扇区和颜色(不必是 6 个)
colorpallete <- function(sectors, color){
if(length(sectors) != length(color)){
print("Error: sectors should have the same length as color")
} else {
circos.initialize(sectors, xlim = c(0, 1))
for(i in 1:3) {
circos.track(ylim = c(0, 1))
}
for(i in 1:length(sectors)){
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = sectors[i]),
get.cell.meta.data("cell.end.degree", sector.index = sectors[i]),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 3),
col = adjustcolor(col = color[i], alpha.f = 0.2))
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = sectors[i]),
get.cell.meta.data("cell.end.degree", sector.index = sectors[i]),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 2),
col = adjustcolor(col = color[i], alpha.f = 0.2))
draw.sector(get.cell.meta.data("cell.start.degree", sector.index = sectors[i]),
get.cell.meta.data("cell.end.degree", sector.index = sectors[i]),
rou1 = get.cell.meta.data("cell.top.radius", track.index = 1),
rou2 = get.cell.meta.data('cell.bottom.radius', track.index = 1),
col = adjustcolor(col = color[i], alpha.f = 0.2))
}
circos.clear()
}}
sectors = letters[1:4]
colset = (c('darkblue', 'blue', 'darkred', 'red'))
colorpallete(sectors, colset)
当然,sectors
和colset
需要长度一样