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

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

为了便于使用,本系列文章介绍的所有绘图都已收录到了 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

相关推荐
一花一world2 天前
2026年10月份-软考-架构设计师综合知识精华及架构设计师论文模板
论文·软考论文·架构设计师·架构师高分论文·架构师综合知识
民乐团扒谱机3 天前
【硬核梳理】一文吃透光电/光学工程/深度学习/生物医学工程顶刊顶会,子刊、中科院分区与代表成果汇总
生物医学工程·顶刊·光学工程·顶会·大子刊
谢白羽4 天前
MiniMax-H3 : 4卡 H20-3e一套权重部署实践/8卡H200部署优化实测
笔记·llm·论文·大模型部署·sglang
imbackneverdie5 天前
论文中的机制图、原理图用什么软件画?AI生成可编辑矢量图的方法分享
人工智能·深度学习·计算机视觉·aigc·科研·ai绘图·科研绘图
AIGC大时代7 天前
本硕大纲别共用一页:同一题目两套可勾选骨架对照(千笔-AIWritePaper)
论文·ai写作·开题报告·千笔-aiwritepaper
AIGC大时代9 天前
把导师批注变成改稿清单:模糊意见(「再深入」)到可执行修订项(千笔-AIWritePaper)
论文·ai写作·开题报告·学术规范·千笔-aiwritepaper
gfsoso12 天前
科研效率翻倍:AI学术搜索+智能综述
科研·学术·高校
hui-梦苑13 天前
[OpenSource]LabPress 正式开源:面向科研实验室的轻量内容管理系统
开源·cms·科研·轻量化·内容管理系统
AIGC大时代14 天前
评 AI 论文工具的 6 个可复核指标:文献能否打开、大纲能否拖拽、检测是否限次…(千笔-AIWritePaper)
aigc·论文·ai写作·评测·千笔-aiwritepaper
派森诺生物14 天前
从环境到人体,微塑料研究的黄金窗口期已到
科研·检测·基因工程·派森诺·微塑料