Nature 绘图复现 | 基因家族散点图
在发表科研论文的过程中,科研绘图是必不可少的,而提升绘图水平最直接的方法就是跟着顶刊学习。
为了便于使用,本系列文章介绍的所有绘图都已收录到了CNSplot项目中
本期我们复现的是 2020 年发表在Nature Neuroscience上的一篇期刊的Figure 2G。
我们先来欣赏下期刊的原图:
原图解读:该图展示了选定的得分排名靠前的基因家族按,平均AUROC进行排序。大多数富集的基因家族可以根据它们的转录、粘附和信号活动进行分类。
1. 导入包
我们首先导入本期绘图用到的 R 包:
library(ggplot2) library(tidyr) library(dplyr) library(patchwork)2. 准备数据
接下来我们导入绘图用到的数据,在CNSplot中给大家提供了测试数据:
data <- read.csv("../data/018-plot/018-data.csv", row.names = 1) colnames(data) <- 1:12 data$Gene <- rownames(data) data1 <- pivot_longer(data, !Gene, names_to = "ENC", values_to = "AUROC") data1$Gene <- factor(data1$Gene, levels = rev(rownames(data))) data1$ENC <- factor(data1$ENC, levels = colnames(data)) # 制作均值数据 data2 <- as.data.frame(rowMeans(data[,1:12])) colnames(data2) <- "AUROC" data2$Gene <- rownames(data2) data2$Gene <- factor(data2$Gene, levels = rev(data2$Gene))3. 准备配色
接下来我们设置绘图用到的配色:
col1 <- c("#b2deed","#9eb6cc","#65a8db","#59c4c3","#da4d91","#a0cc59","#fdbf24", "#e8957a","#ff7f50","#ccb995","#cb81b6","#58bc7d") col2 <- c("#6ec9f2","#f47e20","#a271af","#f47e20","#a271af","#f47e20","#f47e20", "#0f7f80","#0f7f80","#7d1316","#a271af","#6167ae","#6167ae","#6ec9f2", "#0f7f80","#a271af","#b2b3b1","#a271af","#6ec9f2","#a271af","#f47e20", "#a271af","#b2b3b1","#6167ae","#7d1316","#0f7f80","#7d1316")4. 绘制图形
接下来我们通过下面的代码来绘制图形:
p1 <- ggplot() + geom_point(data1, mapping=aes(x=AUROC, y=Gene, color=ENC), shape=21, stroke=1.5, size=2) + geom_point(data2, mapping=aes(x=AUROC, y=Gene), shape=23, fill="black", size=4) + geom_point(data2, mapping=aes(x=AUROC, y=Gene), shape=23, fill="red", size=2) + theme_classic(base_size = 15) + theme(legend.position = "bottom", axis.text.y = element_blank(), axis.title.y = element_blank(), axis.text.x = element_text(color = "black")) + scale_color_manual(values = col1) + guides(color=guide_legend(nrow = 1)) p2 <- ggplot(data2, aes(x=1, y=Gene)) + geom_tile(fill = col2, color="white", linewidth = 2) + theme_void(base_size = 15) + theme(axis.text.y = element_text(color = "black", hjust = 1)) p <- p2 + p1 + plot_layout(widths = c(0.07,1)) p5. 保存图形
接下来我们通过下面的代码来保存绘制的图形:
ggsave("../save/018/018-figure.pdf", p, width = 8, height = 8, dpi = 300)6. Illustrator 修饰
最后我们将保存的 pdf 文件导入 Adobe Illustrator,稍加修饰即可。AI 修饰的详细步骤见视频video/018.mp4。
我们调整下图例的对齐和文本大小:
完成后保存 pdf 文件,Adobe Illustrator 修饰好的绘图都保存为 pdf 文件在 CNSplot 项目的 data 文件夹中给大家提供,位于文件data/018-plot/018-figure.pdf,通过 Adobe Illustrator 打开即可修改。
我们看一下最后的绘图效果:
由于绘图数据是根据原图生成的模拟数据,因此跟原图可能不完全一致,但是基本上已经成功复现了绘图。
CNSplot 介绍
CNSplot专门针对科研绘图中的高级复杂图形,包含了以下内容:
①50个顶刊绘图复现,包含各种高级复杂图形
② 每个绘图都提供了测试数据/模板文
③ 每个绘图都配套了视频教程
④ 配备一站式html文档,代码一键复制,交互式阅读提高用户体验