pythonic生物人

复现Science正刊图,换数据即可用!

本次使用R语言复现一下Science正刊中的1张图!

doi/110.1126/science.adk0775,Fig.1 A原图
doi/110.1126/science.adk0775,Fig.1 A原图
❤️复现效果图-A图❤️
❤️复现效果图-A图❤️

nice~


✅读入测试数据,

Image

✅关键代码,

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) 
Image

✅如何读这张图?

该图本质依旧是一张火山图,但是,添加了一些辅助元素:

  • 🔸左右阴影矩形,表示当前研究中上调的基因(通过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中上调和下调的基因;其它点使用空心圆形,防止一片黑。

关于火山图的详细理解,之前分享过三次,感兴趣可以去看看!火山图实战2


✅值得学习的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)
Image
  • 🔸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") 
Image
  • 🔸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前,

Image

设置alpha后,关键的橙色点和灰色点浮出水面,

Image

本期结束!


测试数据+详细代码:《👉保姆级R可视化教程2.0》,39个章节,20w字+,数百张图,旨在引导如何系统学习R语言可视化,

(加入学习,备注:299)

图片
部分展示如下:
图片
图片
图片
图片
图片
图片
复现效果图-abcd图❤️
复现效果图-b图❤️
图片
❤️复现效果图-ABCD图❤️
图片
❤️复现效果图-bcd图❤️
图片
图片
❤️复现效果图-b图❤️
图片
图片
图片
图片
图片
图片
图片
图片
图片
图片

图片

图片
图片

(加入学习,收费,备注:299)

图片