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

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

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

相关推荐
你的论文学长9 天前
从 Base Code 生成到 AST 语义重构:详解学术长文本的自动化质控方案
运维·人工智能·重构·自动化·论文
逐梦苍穹9 天前
谷歌新研究:训练大模型时“偷懒跳过“50%更新,性能反而提升20%?
人工智能·google·论文·梯度更新
biyezuopinvip10 天前
基于POI数据的巴中市生活服务业空间分布分析(毕业设计论文)
毕业设计·论文·毕业论文·基于poi数据的·巴中市·生活服务业·空间分布分析
biyezuopinvip10 天前
基于Spring Boot的投资理财系统设计与实现(毕业论文)
java·spring boot·vue·毕业设计·论文·毕业论文·投资理财系统设计与实现
biyezuopinvip10 天前
基于Spring Boot的投资理财系统设计与实现(任务书)
java·spring boot·vue·毕业设计·论文·任务书·投资理财系统设计与实现
你的论文学长11 天前
文本处理的 CI/CD:用 NLP 静态分析解决查重飘红与 Format Error
人工智能·ci/cd·自然语言处理·重构·论文·学习方法
一 乐12 天前
英语学习平台系统|基于springboot + vue英语学习平台系统(源码+数据库+文档)
java·vue.js·spring boot·学习·论文·毕设·英语学习平台系统
小哈里12 天前
【科研】ACM MM 论文 Latex 投稿模板修改(基于sample-sigconf-authordraft-v2.16)
人工智能·llm·科研·latex·cv·overleaf
一 乐18 天前
林业资源管理|基于java + vue林业资源管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·林业资源管理系统
一 乐19 天前
健身房预约|基于java+ vue健身房预约小程序系统(源码+数据库+文档)
java·vue.js·spring boot·小程序·论文·毕设·健身房预约小程序