复现Science正刊图,换数据即可用!
本次使用R语言复现一下Science正刊中的1张图!
nice~
✅读入测试数据,
✅关键代码,
ggplot(data_volcano, aes(x=logFC,y=neg_log10_fdr)) +
# 背景阴影
geom_rect(data=shade_data, aes(xmin=xmin,xmax=xmax,ymin=ymin,ymax=ymax,fill=fill), inherit.aes=FALSE) +
scale_fill_identity() +
# 散点
geom_point(data=data_volcano %>% filter(is.na(fill_color)),
aes(x=logFC,y=neg_log10_fdr),
shape=21, color="black", fill=NA, alpha=0.2, size=1.6) +
geom_point(data=data_volcano %>% filter(!is.na(fill_color)),
aes(x=logFC,y=neg_log10_fdr, fill=fill_color),
shape=21, color="black", size=2.0) +
scale_fill_identity() +
# TOP200矩形框
geom_rect(aes(xmin=min(top200_up$logFC), xmax=max(top200_up$logFC),
ymin=min(top200_up$neg_log10_fdr), ymax=max(top200_dn$neg_log10_fdr)),
fill="transparent", color="black", linetype="dotted", linewidth=0.4, inherit.aes=FALSE) +
# 关键基因标签 - 白底黑框
geom_label_repel(data=data_volcano %>% filter(label!=""),
aes(label=label), fill="white", color="#4b4a50",
box.padding=0.6, point.padding=0.3,
size=3.0, fontface="bold", label.size=0.3, max.overlaps=Inf) +
# 区域标注
annotate("text", x=-2.2, y=max(data_volcano$neg_log10_fdr)*1.06,
label="PDAC KRAS UP\n(KRAS-dependent)", color="#9d9dff", size=3.2, hjust=0, fontface="bold") +
# 富集分析线段
geom_segment(data=data_volcano %>% filter(group=="KRAS_SIGNALING_UP"),
aes(x=logFC, xend=logFC, y=-0.35, yend=-1), color="#ffaf18", linewidth=0.6)
✅如何读这张图?
该图本质依旧是一张火山图,但是,添加了一些辅助元素:
🔸左右阴影矩形,表示当前研究中上调的基因(通过log2FC < -0.5 & FDR < 0.05筛选)和下调的基因(通过log2FC > 0.5 & FDR < 0.05筛选); 🔸左右虚线矩形,表示当前研究中上调的基因和下调基因中,log2FC排名前200的基因; 🔸关键基因,重点关注的"KRAS", "FOSL1", "MYC"基因使用青色突出显示并添加文字外框; 🔸下部分添加Hallmark KRAS Signaling gene sets中上调和下调的基因的log2FC分布; 🔸颜色使用,在上半部分分别使用橙色和灰色突出显示Hallmark KRAS Signaling gene sets中上调和下调的基因;其它点使用空心圆形,防止一片黑。
关于火山图的详细理解,之前分享过三次,感兴趣可以去看看!
✅值得学习的R可视化知识点:
🔸 geom_rect()在数据可视化中突出显示特定区域的数据点或范围,传入矩形的四个边界参数(xmin, xmax, ymin, ymax)来确定其大小和位置,
# 背景阴影
geom_rect(data=shade_data, aes(xmin=xmin,xmax=xmax,ymin=ymin,ymax=ymax,fill=fill), inherit.aes=FALSE)
🔸 annotate()添加文字注释,下图中箭头所指都是annotate的作用,
# 区域标注
annotate("text", x=-2.2, y=max(data_volcano$neg_log10_fdr)*1.06,
label="PDAC KRAS UPn(KRAS-dependent)", color="#9d9dff", size=3.2, hjust=0, fontface="bold")
🔸 alpha的科学实用,可以将非重点关注的点alpha设置的很低,以当作背景,避免遮挡重点关注的点,
# 散点
geom_point(data=data_volcano %>% filter(is.na(fill_color)),
aes(x=logFC,y=neg_log10_fdr),
shape=21, color="black", fill=NA, alpha=0.2, size=1.6) +
geom_point(data=data_volcano %>% filter(!is.na(fill_color)),
aes(x=logFC,y=neg_log10_fdr, fill=fill_color),
shape=21, color="black", size=2.0)
设置alpha前,
设置alpha后,关键的橙色点和灰色点浮出水面,
本期结束!
(加入学习,备注:299)
(加入学习,收费,备注:299)