1. 前言
比较转录组是每个生信人入门的第一课,但是在如今卷科研绘图的年代,传统的图已经不能满足顶刊的需求了,因此今天决定来更新转录组的高级绘图特别板块,包括差异分析火山图,功能富集分析图等等。今天来进行转录组的第一张图,差异火山图。
2. 输入文件
xlsx格式的矩阵文件,1-5列分别为,基因ID、基因名、Log2FC、p adj和差异类型。
| gene_id | GeneSymbol | log2FoldChange | padj | change |
|---|---|---|---|---|
| ENSMUSG00000015340 | Cybb | 3.798364673 | 2.16399E-89 | Up |
| ENSMUSG00000026177 | Slc11a1 | 3.926648494 | 5.57001E-88 | Up |
| ENSMUSG00000022586 | Ly6i | 7.112341161 | 7.2439E-80 | Up |
| ENSMUSG00000028581 | Laptm5 | 3.228974154 | 1.32924E-78 | Up |
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. 结果