国产午夜精品无码一区二区,国产成人无码网站,日本少妇xxxx做受,欧美视频二区欧美影视,女人被躁到高潮嗷嗷叫游戏

首頁> 關于我們 >新聞中心>技術分享>新聞詳情

單細胞高分圖片復現(獨家代碼附上)之系列(三): 高分主Fig-富集分析圈圖

2025-05-28

GO/KEGG富(fu)集(ji),每個人都做過,但富(fu)集(ji)結果中有很多條(tiao)目,每個條(tiao)目中又(you)(you)有很多參(can)數需要(yao)展示(shi)(shi)(比(bi)如(ru)富(fu)集(ji)到的(de)基因數,P值,richfactor等),如(ru)果用常規的(de)Barplot, Dotplot來展示(shi)(shi)的(de)話,就(jiu)(jiu)需要(yao)多張圖片(pian)分(fen)別展示(shi)(shi)部分(fen)信息,就(jiu)(jiu)會(hui)顯得圖片(pian)比(bi)較(jiao)繁雜。那有沒(mei)有能一張圖就(jiu)(jiu)展示(shi)(shi)完所有上述參(can)數信息,又(you)(you)比(bi)較(jiao)美觀的(de)圖呢?有的(de)兄弟,有的(de)。富(fu)集(ji)分(fen)析圈圖就(jiu)(jiu)是你(ni)要(yao)找的(de)圖。

圖1 富集分析圈圖

圖(tu)(tu)1中(zhong)展示的就是富集分析(xi)圈圖(tu)(tu),由(you)4層環構成(cheng),圓圈中(zhong)心和右(you)側是各層的圖(tu)(tu)例(li)。從內圈到外分別展示了(le):

1.richfactor: 最圈代表富集(ji)倍(bei)數(shu),在0-1范圍內取值,值越(yue)大格數(shu)越(yue)多,顏色代表GO/KEGG類別;

2. 分組基因數:第二圈顏色(se)代表(biao)上下調基(ji)因,數字代表(biao)基(ji)因數量(liang);

3. 富集到的基因數與P值: 第三圈代表(biao)-log10(pvalue)值,顏色深淺代表(biao)值的高低;

4. 通路id及分類:第四(si)圈代表GO/KEGG條目ID,顏色(se)代表GO/KEGG類別(bie)。

下面(mian),我們來一(yi)層(ceng)一(yi)層(ceng)地畫這張圖。

1.數據準備:從富(fu)集結果中(zhong)提取(qu)每個(ge)Term生成下面這張表格(ge),在R中(zhong)讀(du)取(qu)它

2.第一圈:我們根據表格中(zhong)的通(tong)路分類給(gei)通(tong)路涂上(shang)不(bu)同的顏(yan)色(se),并(bing)且用通(tong)路總基因數給(gei)圈圖(tu)加(jia)上(shang)坐標。

library(circlize)

library(grid)

library(gridBase)

library(graphics)

library(ComplexHeatmap)

circlize_df <-read.csv(‘富(fu)集結果表格(ge)’)

circlize_df$Category_color<-color[as.numeric(factor(circlize_df$Category))]

rownames(circlize_df)<-circlize_df$GO

circlize_df$gene_num.min <- 0

circlize_df$gene_num.rich <- circlize_df$Total

circlize_df$gene_num.max <- max(circlize_df$gene_num.rich)

circlize_df$stat_val <- -log10(circlize_df$adjustPvalue)

title_second_data <- "-Log10(adjust.Pvalue)"

circle_size <- unit(1, "snpc")

circos.par(gap.degree = 0.5, start.degree = 90)

plot_data <- circlize_df[, c("GO", "gene_num.min", "gene_num.max")]

plot.new()

pushViewport(viewport(

x = 0, y = 0.5, width = circle_size, height = circle_size,

just = c("left", "center")

))

par(omi = gridOMI(), new = TRUE)

circos.genomicInitialize(plot_data, plotType = NULL)

circos.track(

ylim = c(0, 1), track.margin = c(0, 0), track.height = 0.08, bg.border = NA, bg.col = circlize_df$Category_color,

panel.fun = function(x, y) {

ylim <;- get.cell.meta.data("ycenter")

xlim <- get.cell.meta.data("xcenter")

sector.name <- get.cell.meta.data("sector.index")

circos.axis(h = "top", labels.cex = 0.6, labels.pos.adjust = T, labels.col = &quot;#000000", labels.niceFacing = FALSE)

circos.text(xlim, ylim, sector.name, cex = 0.6, col = &quot;#000000", niceFacing = FALSE)

}

)

圖2 富集分析圈圖的第一圈

3.第二圈:繪制(zhi)富(fu)集的基(ji)因和富(fu)集p值。

plot_data <- circlize_df[, c("GO", "gene_num.min", "gene_num.rich", "stat_val")]

label_data <- circlize_df[, "gene_num.rich"]

label_data <- as.data.frame(label_data)

rownames(label_data) <- circlize_df$GO

p_max <- round(max(circlize_df[["stat_val"]])) + 1

colorsChoice <- colorRampPalette(second_col)

color_assign <- colorRamp2(breaks = 0:p_max, col = colorsChoice(p_max + 1))

circos.genomicTrackPlotRegion(

plot_data,

track.margin = c(0, 0), track.height = 0.1, bg.border = NA, stack = TRUE,

panel.fun = function(region, value, ...) {

circos.genomicRect(region, value, col = color_assign(value[[1]]), border = NA, ...)

ylim <- get.cell.meta.data("ycenter")

xlim <- label_data[get.cell.meta.data("sector.index";), 1] / 2

sector.name <- label_data[get.cell.meta.data("sector.index"), 1]

circos.text(xlim, ylim, sector.name, cex = 0.8, col = "#000000", niceFacing = FALSE)

}

)

圖3 添加(jia)富集(ji)分析圈(quan)圖的第二(er)圈(quan)

4.第三圈:分組基因數。這里我們用上(shang)下調基因作為分組。

circlize_df$up.proportion <- circlize_df$Up / (circlize_df$Up+circlize_df$Down)

circlize_df$down.proportion &lt;- circlize_df$Down / (circlize_df$Up+circlize_df$Down)

circlize_df$up_v <- circlize_df$up.proportion * circlize_df$gene_num.max

plot_data_up <- circlize_df[, c("GO", ";gene_num.min", "up_v")]

names(plot_data_up) <- c("id", &quot;start", "end")

plot_data_up$type <- 1

circlize_df$down_v <- circlize_df$down.proportion * circlize_df$gene_num.max + circlize_df$up_v

plot_data_down <- circlize_df[, c("GO", "up_v&quot;, "down_v")]

names(plot_data_down) &lt;- c("id", "start", "end")

plot_data_down$type <- 2

plot_data <- rbind(plot_data_up, plot_data_down)

label_data &lt;- circlize_df[, c("up_v", "down_v", "Up", "Down")]

label_data <- as.data.frame(label_data)

rownames(label_data) <- circlize_df$GO

color_assign <- colorRamp2(breaks = c(1, 2), col = c(upcol, downcol))

circos.genomicTrackPlotRegion(

plot_data,

track.margin = c(0, 0), track.height = 0.1, bg.border = NA, stack = TRUE,

panel.fun = function(region, value, ...) {

circos.genomicRect(region, value, col = color_assign(value[[1]]), border = NA, ...)

ylim <- get.cell.meta.data("cell.bottom.radius") - 0.5

xlim <- label_data[get.cell.meta.data("sector.index"), 1] / 2

sector.name <- ifelse(label_data[get.cell.meta.data("sector.index"), 3] > 0, label_data[get.cell.meta.data("sector.index"), 3], " ")

circos.text(xlim, ylim, sector.name, cex = 0.6, col = &quot;#000000", niceFacing = FALSE)

xlim <- (label_data[get.cell.meta.data("sector.index"), 2] + label_data[get.cell.meta.data("sector.index"), 1]) / 2

sector.name <;- ifelse(label_data[get.cell.meta.data("sector.index"), 4] > 0, label_data[get.cell.meta.data("sector.index"), 4], " ")

circos.text(xlim, ylim, sector.name, cex = 0.6, col = "#000000", niceFacing = FALSE)

}

)

圖(tu)4 添加(jia)富集分析圈圖(tu)的第三圈

5.第四圈:繪制富集因子。

plot_data <- circlize_df[, c("GO", &quot;gene_num.min", "gene_num.max", "RichFactor")]

label_data <- circlize_df[, c("Category", "RichFactor")]

label_data$RichFactor <- round(label_data$RichFactor, 2)

label_data <- as.data.frame(label_data)

rownames(label_data) <- circlize_df$GO

circos.genomicTrack(

plot_data,

track.margin = c(0.01, 0.04), track.height = 0.3, ylim = c(0.05, 0.95), bg.col = "gray95", bg.border = NA, # ylim = c(0, 1)

panel.fun = function(region, value, ...) {

sector.name <- get.cell.meta.data("sector.index")

for (i in seq(0.1, 0.9, by = 0.1)) {

circos.lines(c(0, max(region)), c(i, i), col = "gray", lwd = 0.3)

}

circos.genomicRect(region, value, col = circlize_df[sector.name,'Category_color'], border = NA, ytop.column = 1, ybottom = 0, ...)

ylim <- label_data[get.cell.meta.data("sector.index"), 2] - 0.05

xlim <- get.cell.meta.data("xcenter")

sector.name <- label_data[sector.name, 2]

circos.text(xlim, ylim, sector.name, cex = 0.8, col = &quot;#000000", niceFacing = FALSE)

}

)

圖(tu)5 添加富集分(fen)析圈圖(tu)的第四圈

6.最后一步:繪制圖例。

updown_legend <- Legend(

labels = c(&quot;Number of Genes", "Up-regulated", &quot;Down-regulated", "Rich Factor(0-1)"),

graphics = list(

function(x = 0, y, w, h) {

grid.draw(gTree(

children = gList(

rectGrob(x = 0, y, w * 2.2, h * 1, gp = gpar(fill = "gray80&quot;, col = "gray80")),

textGrob("100", x = 0, y)),

gp = gpar(col = "black", fontsize = 10, fontface = "bold&quot;)))},

function(x = 0, y, w, h) {

grid.rect(x = 0, y, w * 2.2, h * 1, gp = gpar(fill = upcol, col = upcol))},

function(x = 0, y, w, h) {

grid.rect(x = 0, y, w * 2.2, h * 1, gp = gpar(fill = downcol, col = downcol))},

function(x = 0, y, w, h) {

grid.polygon(y = c(0.09, -0.05, -0.12, 0.16), x = c(-0.13, -0.13, 0.13, 0.13), gp = gpar(fill = "gray85", col = "gray85"))}),

labels_gp = gpar(fontsize=10), # grid_height = unit(0.6, 'cm'), grid_width=unit(0.8, 'cm'),

row_gap = unit(2, "mm"))

category_legend <- Legend(

labels = unique(circlize_df$Category),

type = "points", pch = NA, background = unique(circlize_df$Category_color),

labels_gp = gpar(fontsize = 10), row_gap = unit(1, "mm")

) # grid_height = unit(0.6, 'cm'), grid_width = unit(0.8, 'cm'))

pvalue_legend <- Legend(

col_fun = colorRamp2(breaks = 0:p_max, col = colorsChoice(p_max + 1)),

legend_height = unit(3, "cm"), labels_gp = gpar(fontsize = 10),

title_gp = gpar(fontsize = 10), title_position = "topleft", title = paste0(title_second_data, "\n"), row_gap = unit(3, "mm"))

lgd_list_vertical <- packLegend(updown_legend)

lgd_list_vertical2 <- packLegend(category_legend, pvalue_legend)

draw(lgd_list_vertical, just = "center")

upViewport()

draw(lgd_list_vertical2, x = circle_size, just = "left&quot;)

應用場景與注意事項

1.適用場景:

可用于解析生物(wu)學(xue)機制,如揭(jie)示疾病、發育等過(guo)程的關鍵通路;注釋細(xi)胞亞群功能(neng),明確其(qi)特性;篩選生物(wu)標志物(wu);輔助藥(yao)物(wu)靶點(dian)發現(xian)與重定位;整合多組學(xue)數據及指導實(shi)驗驗證方向(xiang)等,助力生物(wu)醫學(xue)研究(jiu)。

2.可視化調整:

可根據研究重點調整顏色(se)(se)方案(如按(an)通(tong)路類別(bie)分組著(zhu)色(se)(se))、過濾低富集因子的條(tiao)(tiao)目(mu),或添加(jia)熱圖(tu)刻度條(tiao)(tiao)增強可讀性。

總 結

富集圈圖通過多維度信息的空間整合,為復雜的基因功能分析提供了直觀的解讀框架,助力研究者快速定位關鍵通路與核心基因,推動單細胞轉錄組數據的深度挖掘。繪制圖片或者復現代碼過程中,如果老師遇到疑惑,歡迎撥打我們的熱線電話或者聯系我們的駐地銷售。