小马的生信笔记

转录组高级绘图-差异火山图进阶版

1. 前言

比较转录组是每个生信人入门的第一课,但是在如今卷科研绘图的年代,传统的图已经不能满足顶刊的需求了,因此今天决定来更新转录组的高级绘图特别板块,包括差异分析火山图,功能富集分析图等等。今天来进行转录组的第一张图,差异火山图。

2. 输入文件

xlsx格式的矩阵文件,1-5列分别为,基因ID、基因名、Log2FC、p adj和差异类型。

gene_idGeneSymbollog2FoldChangepadjchange
ENSMUSG00000015340Cybb3.7983646732.16399E-89Up
ENSMUSG00000026177Slc11a13.9266484945.57001E-88Up
ENSMUSG00000022586Ly6i7.1123411617.2439E-80Up
ENSMUSG00000028581Laptm53.2289741541.32924E-78Up

3. 绘图

####—-load R Package—-####

library(tidyverse)
library(ggrepel)
library(ggfun)
library(grid)
library(readxl)

####—-load Data—-####
df <- read_xlsx(path = “Input/DEG.xlsx”)

####—-MODIFIED PART START—-####
# 需要高亮的基因
gene_list <- c(“Laptm5”, “Eps8l2”)

# 筛选目标基因数据
target_genes <- df %>%
filter(GeneSymbol %in% gene_list) # 精确匹配基因名称

####—-Plot—-####
p <- ggplot(data=df,
aes(x=log2FoldChange,
y=-log10(padj)))+
geom_point(alpha=0.6, aes(size = -log10(padj), color=log2FoldChange))+
scale_color_gradientn(colours = c(“#2166ac”, “#4393c3″,”#ffffbf”, “#de77ae”, “#c51b7d”),
values = seq(0, 1, 0.2)) +
# 高亮目标基因点
geom_point(data = target_genes,
aes(x = log2FoldChange, y = -log10(padj), size = -log10(padj)),
shape = 21, color = “#000000”, fill = “#ff7f00”) +
# 目标基因标签
geom_text_repel(data = target_genes,
aes(x = log2FoldChange, y = -log10(padj), label = GeneSymbol),
nudge_x = 0.5,
box.padding = 0.5,
nudge_y = 1,
segment.curvature = -0.1,
segment.ncp = 3,
segment.angle = 20
) +
####—-MODIFIED PART END—-####
scale_size(range = c(2,10),
guide = guide_legend(override.aes = list(fill = NA)))+
scale_y_continuous(expand = expansion(mult = c(0.1, 0.2))) +
xlim(c(-6, 6)) +
geom_vline(xintercept = c(-1.5, 1.5), lty = 4, col = “black”, lwd = 0.8) +
geom_hline(yintercept = -log10(0.05), lty = 4, col = “black”, lwd = 0.8) +
xlab(‘log2 fold change’)+
ylab(‘-log10 padj’)+
theme_bw() +
theme(plot.title = element_text(size = 15,hjust = 0.5),
legend.background = element_roundrect(color = ‘#808080’,linetype = 1),
axis.text = element_text(size = 12.5, color = “#000000”),
axis.title = element_text(size = 15, color = “#000000”)
) +
coord_cartesian(clip = “off”) +
annotation_custom(
grob = grid::segmentsGrob(
y0 = unit(-10, “pt”),
y1 = unit(-10, “pt”),
arrow = arrow(angle = 45, length = unit(.2, “cm”), ends = “first”),
gp = grid::gpar(lwd = 3, col = “#74add1”)
),
xmin = -3,
xmax = -5,
ymin = 95,
ymax = 95
) +
annotation_custom(
grob = grid::textGrob(
label = “Down\n(634)”, # 下调基因的数量
gp = grid::gpar(col = “#74add1”)
),
xmin = -3,
xmax = -5,
ymin = 97,
ymax = 97
) +
annotation_custom(
grob = grid::segmentsGrob(
y0 = unit(-10, “pt”),
y1 = unit(-10, “pt”),
arrow = arrow(angle = 45, length = unit(.2, “cm”), ends = “last”),
gp = grid::gpar(lwd = 3, col = “#d73027”)
),
xmin = 3,
xmax = 5,
ymin = 95,
ymax = 95
) +
annotation_custom(
grob = grid::textGrob(
label = “Up\n(2075)”, # 上调的基因数量
gp = grid::gpar(col = “#d73027”)
),
xmin = 3,
xmax = 5,
ymin = 97,
ymax = 97
)

ggsave(filename = “custom_volcano_plot_S2.pdf”,
plot = p,
height = 8,
width = 8.5)

4. 结果

发表评论