在发表科研论文的过程中,科研绘图是必不可少的,而提升绘图水平最直接的方法就是跟着顶刊学习。
为了便于使用,本系列文章介绍的所有绘图都已收录到了 CNSplot 项目中,获取方式:
TigerZ 生信宝库科研绘图资源合集 — PlotOnePiece
https://mp.weixin.qq.com/s?__biz=MzkwMjM0MzA5MA==&mid=2247494177&idx=1&sn=a3641e1d1a28c523029145187c75a01a&scene=21&poc_token=HI5VGWqjMWhvVSrSE9Z3uIklMA9dSnp3-xofyBt-本期我们复现的是 2019 年发表在 Nature Communications 上的一篇期刊的 Figure 3C。
我们先来欣赏下期刊的原图:

期刊原图
原图解读:该热图显示了前额叶皮层、初级视觉皮层和前外侧运动皮层中兴奋性神经元亚型之间的转录谱相似性。
1. 导入包
我们首先导入本期绘图用到的 R 包:
library(pheatmap)
library(gridExtra)
library(ggplot2)
2. 准备数据
接下来我们导入绘图用到的数据,在 CNSplot 中给大家提供了测试数据:
# 上三角数据
data1 <- read.csv("../data/016-plot/016-data.csv", row.names = 1)
colnames(data1) <- rownames(data1)
# 下三角数据,这里直接使用data1矩阵的转置
data2 <- t(data1)
3. 准备配色
接下来我们设置绘图用到的配色:
col <- c("#4575B4FF","#74ADD1FF","#ABD9E9FF","#E0F3F8FF","#FFFFBFFF","#FEE090FF",
"#FDAE61FF","#F46D43FF","#D73027FF")
4. 绘制图形
接下来我们通过下面的代码来绘制图形:
# 设置仅显示上三角边框颜色
border_mat <- matrix("grey60", nrow = nrow(data1), ncol = ncol(data1))
border_mat[lower.tri(border_mat)] <- NA
# 设置间隔
gaps <- c(7,15,19,21,22,24,27,30,34,37,41,45,46,50,51)
p1 <- pheatmap(
data1, color = colorRampPalette(col)(100), border_color = border_mat,
cluster_rows = FALSE, cluster_cols = FALSE, gaps_row = gaps, gaps_col = gaps,
na_col = NA, silent = TRUE)
p1
# 设置仅显示下三角边框颜色
border_mat <- matrix("grey60", nrow = nrow(data2), ncol = ncol(data2))
border_mat[upper.tri(border_mat)] <- NA
p2 <- pheatmap(
data2, color = colorRampPalette(col)(100), border_color = border_mat,
cluster_rows = FALSE, cluster_cols = FALSE, gaps_row = gaps, gaps_col = gaps,
na_col = NA, silent = TRUE)
p2
p <- grid.arrange(p1$gtable, p2$gtable, ncol = 2)

步骤1
5. 保存图形
接下来我们通过下面的代码来保存绘制的图形:
ggsave("../save/016/016-figure.pdf", p, width = 20, height = 10, dpi = 300)
6. Illustrator 修饰
最后我们将保存的 pdf 文件导入 Adobe Illustrator,稍加修饰即可。AI 修饰的详细步骤见视频 video/016.mp4。
我们调整上下热图的位置,添加分组注释,并调整文本的颜色,并设置图例:

步骤2
完成后保存 pdf 文件,Adobe Illustrator 修饰好的绘图都保存为 pdf 文件在 CNSplot 项目的 data 文件夹中给大家提供,位于文件 data/016-plot/016-figure.pdf,通过 Adobe Illustrator 打开即可修改。
我们看一下最后的绘图效果:

绘图复现
由于绘图数据是根据原图生成的模拟数据,因此跟原图可能不完全一致,但是基本上已经成功复现了绘图。
CNSplot 介绍
CNSplot 专门针对科研绘图中的高级复杂图形,包含了以下内容:
① 50 个顶刊绘图复现,包含各种高级复杂图形

② 每个绘图都提供了测试数据/模板文件

③ 每个绘图都配套了视频教程

④ 配备一站式 html文档,代码一键复制,交互式阅读提高用户体验








