https://jokergoo.github.io/circlize_book/book/high-level-plots.html
category<-paste0("category","_",1:9)
percent<-sort(sample(40:80,9))
color<-rev(rainbow(length(percent)))
category
percent
color
df<-data.frame(category,percent)
df
library(ggplot2)
ggplot(df,aes(x=category,y=percent))+
geom_col(aes(fill=category))+
scale_fill_manual(values = color)+
theme_bw()+coord_flip()+labs(x="")+
theme(legend.position = "none")
image.png
Rplot13.png
library(circlize)
circos.par("start.degree" = 90, cell.padding = c(0, 0, 0, 0))
circos.initialize("a",xlim=c(0,100))
circos.track(ylim = c(0.5, length(percent)+0.5), track.height = 0.8,
bg.border = NA, panel.fun = function(x, y) {
xlim = CELL_META$xlim
circos.segments(rep(xlim[1], 9), 1:9,
rep(xlim[2], 9), 1:9,
col = "#CCCCCC")
circos.rect(rep(0, 9), 1:9 - 0.45, percent, 1:9 + 0.45,
col = color, border = "white")
circos.text(rep(xlim[1], 9), 1:9,
paste(category, " - ", percent, "%"),
facing = "downward", adj = c(1.05, 0.5), cex = 0.8)
breaks = seq(0, 85, by = 5)
circos.axis(h = "top", major.at = breaks, labels = paste0(breaks, "%"),
labels.cex = 0.6)
})
circos.clear()
以上代码实际出图
image.png
如何通过代码去掉灰色的线条呢?我的是出图后再编辑的 另外函数circos.rect()和函数circos.segments()的用法还不太懂!
circos.segments()
是用来画线的,如果把下面代码去掉的话
circos.segments(rep(xlim[1], 9), 1:9,
rep(xlim[2], 9), 1:9,
col = "#CCCCCC")
图中就没有灰色线条了
circos.rect()
是用来画矩形的
例子
library(circlize)
library(RColorBrewer)
col<-RColorBrewer::brewer.pal(6,"Paired")
df<-data.frame(chr=sample(c(paste0("chr",1:6)),1000,replace = T),
x=rnorm(1000),
y=rnorm(1000))
head(df)
circos.initialize(factors = df$chr,x=df$x)
circos.trackPlotRegion(factors = df$chr,y=df$y,
panel.fun = function(x,y){
circos.axis()
})
circos.segments(x0=0,x1=1,y0=0,y1=1)
circos.rect(xleft=0,xright=1,ybottom = -1,ytop=1,col="red")
circos.rect(xleft=-1,xright=1,ybottom = -1,ytop=1,
col="blue",sector.index = "chr1")
circos.rect(xleft=-1,xright=1,ybottom = -5,ytop=5,
col="green",sector.index = "chr2")
circos.clear()