顶刊绘图复现 --- 色块折线柱状组合图

在发表科研论文的过程中,科研绘图是必不可少的,而提升绘图水平最直接的方法就是跟着顶刊学习。

为了便于使用,本系列文章介绍的所有绘图都已收录到了 CNSplot 项目中,获取方式:

顶刊绘图复现模板 --- CNSplothttps://mp.weixin.qq.com/s?_biz=MzkwMjM0MzA5MA==&mid=2247494176&idx=1&sn=6a34d3515fef785c1ea6935ee128900e&scene=21&poc_token=HL-iWmjOFEpXFwPi0h5X1uFuOXrpemKG8ADVgYa

本期我们复现的是 2022 年发表在 Journal of Pineal Research 上的一篇期刊的 Figure 1A

我们先来欣赏下期刊的原图:

期刊原图

**原图解读:**该图是由色块图、折线图、柱状图三图组合而成的复杂图形。绘制了来自 GSE131907 和 GSE123904 中 30 例肺腺癌(lung adenocarcinoma, LUAD)患者的临床和分子特征。患者按照三个样本来源中恶性细胞数量的顺序排列。每个患者贡献的细胞比例和细胞类型用不同颜色表示。

1. 导入包

我们首先导入本期绘图用到的 R 包:

R 复制代码
library(ggplot2)
library(tidyr)
library(ggnewscale)
library(patchwork)

2. 准备数据

接下来我们导入绘图用到的数据,在 CNSplot 中给大家提供了测试数据:

R 复制代码
data <- read.csv("../data/001-plot/001-data.csv")
data$Sample <- factor(data$Sample, levels = data$Sample)
data1 <- data[,1:6]
data2 <- data[,c(1,7)]
data3 <- pivot_longer(data[,c(1,8:12)], !Sample, names_to = "Stage", values_to = "Value")

3. 准备配色

接下来我们设置绘图用到的配色:

R 复制代码
col1 <- c("A"="#fa8b6a", "B"="#e5cf52",
         "One"="#3199c2", "Two"="#ed7252", "Three"="#be599c",
         "Alpha"="#e8f0e1", "Beta"="#bbd3a8", "Gamma"="#9ac190",
         "a"="#f2d7b6", "b"="#fef3dd",
         "CT"="#e878a9", "WT"="#feeff4")
col3 <- c("Stage1"="#ef8576",   "Stage2"="#eeb570", "Stage3"="#d69faa", 
          "Stage4"="#84afd2",   "Stage5"="#90d0c5")

4. 绘制图形

接下来我们通过下面的代码来绘制图形:

R 复制代码
p1 <- 
  ggplot(data1, aes(x=Sample)) +
  geom_tile(aes(y="Type1", fill=Type1), color="white", lwd = 0.5) +
  scale_fill_manual(values = col1, guide = guide_legend(order = 1)) +
  new_scale_fill() +
  geom_tile(aes(y="Type2", fill=Type2), color="white", lwd = 0.5) +
  scale_fill_manual(values = col1, guide = guide_legend(order = 2)) +
  new_scale_fill() +
  geom_tile(aes(y="Type3", fill=Type3), color="white", lwd = 0.5) +
  scale_fill_manual(values = col1, guide = guide_legend(order = 3)) +
  new_scale_fill() +
  geom_tile(aes(y="Type4", fill=Type4), color="white", lwd = 0.5) +
  scale_fill_manual(values = col1, guide = guide_legend(order = 4)) +
  new_scale_fill() +
  geom_tile(aes(y="Type5", fill=Type5), color="white", lwd = 0.5) +
  scale_fill_manual(values = col1, guide = guide_legend(order = 5)) +
  scale_y_discrete(limits=rev) +
  theme_minimal(base_size = 15) +
  theme(panel.grid = element_blank(), axis.text.x = element_blank(),
        legend.spacing.y = unit(0.1, "cm"), legend.position = c(1.05, -0.6)) +
  labs(x="", y="")

p2 <- 
  ggplot(data2, aes(x=Sample, y=Number, group=1)) +
  geom_line(color="black", size=1.5) +
  geom_point(shape=21, color="black", fill="black", size=4) +
  scale_y_continuous(breaks=seq(1,12,2), limits = c(0,12),
                     expand = expansion(mult = c(0, 0.05))) +
  theme_classic(base_size = 15) +
  theme(axis.line.x = element_blank(), axis.ticks.x = element_blank(),
        axis.text.x = element_blank()) +
  labs(x="", y="Number")

p3 <- 
  ggplot(data3, aes(x=Sample, y=Value, fill=Stage)) +
  geom_bar(position = "stack", stat = "identity", width = 0.7) +
  scale_y_continuous(breaks=seq(0,1,0.5), limits = c(0,1),
                     expand = expansion(mult = c(0, 0.05))) +
  scale_fill_manual(values = col3) +
  theme_classic(base_size = 15) +
  theme(panel.grid = element_blank(), axis.line.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5)) +
  labs(x="", y="Proportion")

p <- 
  p1/p2/p3 + plot_layout(heights = c(0.7,1,1)) &
  theme(legend.key.size = unit(0.4, "cm"),
        legend.title = element_text(size = 12, face="bold"),
        legend.text = element_text(size = 10))

p

步骤1

5. 保存图形

接下来我们通过下面的代码来保存绘制的图形:

R 复制代码
ggsave("../save/001/001-figure.pdf", p, width = 10, height = 8, dpi = 300)

6. Illustrator 修饰

最后我们将保存的 pdf 文件导入 Adobe Illustrator,稍加修饰即可。AI 修饰的详细步骤见视频 video/001.mp4

我们调整下图例的对齐和文本大小:

步骤2

完成后保存 pdf 文件,Adobe Illustrator 修饰好的绘图都保存为 pdf 文件在 CNSplot 项目的 data 文件夹中给大家提供,位于文件 data/001-plot/001-figure.pdf,通过 Adobe Illustrator 打开即可修改。

我们看一下最后的绘图效果:

绘图复现

由于绘图数据是根据原图生成的模拟数据,因此跟原图可能不完全一致,但是基本上已经成功复现了绘图。

CNSplot 介绍

CNSplot 专门针对科研绘图中的高级复杂图形,包含了以下内容:

50 个顶刊绘图复现,包含各种高级复杂图形

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

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

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

往期推荐

PlotOnePiece 珍藏了 TigerZ 生信宝库的所有绘图资源,想要我的宝藏吗?我把它们全部都放在了这里🏴‍☠️:
TigerZ 生信宝库科研绘图资源合集 --- PlotOnePiece

CNSplot 专门针对科研绘图中的高级复杂图形,包含了 50 个顶刊绘图复现,每个绘图都提供了测试数据/模板文件 。所有绘图代码都整理到了一个 html 文档 中,并且还配套了视频教程。详细信息见:
顶刊绘图复现模板 --- CNSplot

sciRplot 项目用于解决 R 语言中科研绘图的问题,包含了 100 种绘图代码(60基础绘图 + 40进阶绘图 )。每个绘图都提供了测试数据 ,所有绘图代码都整理到了一个 html 文档中。详细信息见:
R 语言科研绘图模板 --- sciRplot

sciRcolor 项目用于解决 R 语言科研绘图中颜色选择的问题,包含了 100 种常用配色(60离散色 + 40连续色 )。并且提供了一个用来预览配色的在线网站 ,以及用来获取配色的 R 包。详细信息见:
R 语言科研配色工具 --- sciRcolor

相关推荐
Tiger Z3 天前
Nat Neurosci 绘图复现 | Upset图
论文复现·顶刊·科研配色
科研邪修法7 天前
如何在指定期刊内检索论文?快速找同类研究
论文·科研·文献阅读
Coder-coco7 天前
家政服务管理系统|基于springboot + vue家政服务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·家政服务管理系统
壹贰一8 天前
遇到“需要编译CUDA扩展”怎么办
科研
weixin_4166600711 天前
Gemini插件分享:解决Gemini导出复杂公式乱码的问题
ai·论文·数学公式
蛋白界小百灵13 天前
SDS-PAGE与Western Blot中蛋白Marker异常图谱分析:原因排查与标准化预防
知识图谱·科研·生物技术·实验
欧亚学术13 天前
【计算机科学】中科院1区降至2区的期刊
论文·科研·sci·学术·期刊·博士·计算机sci
Tiger Z13 天前
科研配色 --- 8色篇
论文·科研·研究生·配色
roman_日积跬步-终至千里16 天前
【论文】Agentic NL2SQL to Reduce Computational Costs
论文
你的论文学长1 个月前
从 Base Code 生成到 AST 语义重构:详解学术长文本的自动化质控方案
运维·人工智能·重构·自动化·论文