摘要LLM 归库摘要
- 核心内容: 复现张泽民院士团队风格的"云雾感" UMAP 图——通过
geom_point(size=0.03, shape=16, stroke=0)让点足够小且无描边形成"云里雾里"的质感,配合精选柔和配色与干净主题。- 适用场景: 单细胞 UMAP/t-SNE 降维图的发表级美化;适合展示大量细胞点的整体分布而不被单点干扰。
- 输入: UMAP 坐标 + 细胞分群注释(如
B_UMAP.csv+ metadata 合并得到 UMAP_1/UMAP_2/Cluster),或自有 Seurat 对象的坐标。- 输出:
BCells_Umap.png(2×2 in, 300 dpi)+ 单独图例FigureS1C_legend.pdf,可多亚群拼装。- 关键参数/步骤:
geom_point(size=0.03, shape=16, stroke=0)是核心;配色color <- c("#919ac2","#ffac98",...);theme_classic()+ 去网格/去刻度 + 坐标轴箭头;facet_grid(~label)分面;图例单独绘制用size=0点 +override.aes=list(size=2)。- 常见错误: 点太大或带描边会失去"云雾感";图例若随主图绘制会占空间,应单独出图后拼装;多亚群需逐一绘制再 PS 拼装。
- 与口腔生信连接: 牙周炎/OSCC 单细胞项目 UMAP 分群图可直接套用此风格 + 配色,形成与顶刊一致的发表级降维图。
- 下一步处理: 暂未试用;需 GSE243013 数据(NCBI GEO)或自有单细胞 UMAP 坐标试跑。
- 归库说明: 分类到 03 生信教程与工具库(可视化与配色),置信度 0.90,理由:UMAP 可视化复现教程、含完整可复用 R 代码。
新叶910 生信技能树 2025年9月2日 22:29
最近我们生信入门班的学员问起了一个大佬的文章,想知道里面的那种带有“云里雾里”感的 UMAP 如何实现!我看了下这个文献,然后找了找之前收集的张泽民院士团队的单细胞文章,发现里面全是这种风格,配色也好看,现在分享给大家!欢迎大家一键三连~
图来自国际期刊《cell》上以Resource形式在线发表的题为《A single-cell atlas reveals immune heterogeneity in anti-PD-1-treated non-small cell lung cancer》的研究论文。曾老板在昨天也进行了介绍: 用R绘图之前可以让ai先给出草稿代码
当然是给出来全部的数据和代码啦:
https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE243013
GSE243013_NMF_all_group_5.csv.gz 1.1 Kb (ftp)(http) CSV
GSE243013_NSCLC_immune_scRNA_counts.mtx.gz 6.6 Gb (ftp)(http) MTX
GSE243013_NSCLC_immune_scRNA_metadata.csv.gz 38.8 Mb (ftp)(http) CSV
GSE243013_RAW.tar 516.4 Mb (http)(custom) TAR (of TAR)
GSE243013_T_with_TCR_annotation.csv.gz 15.2 Mb (ftp)(http) CSV
GSE243013_UMAP_info.tar.gz 20.6 Mb (ftp)(http) TAR
GSE243013_barcodes.csv.gz 6.4 Mb (ftp)(http) CSV
GSE243013_genes.csv.gz 111.5 Kb (ftp)(http) CSV
绘图#
绘图的代码其实非常简单,先读取数据:
###
### Create: Jianming Zeng
### Date: 2023-12-31
### Email: jmzeng1314@163.com
### Blog: http://www.bio-info-trainee.com/
### Forum: http://www.biotrainee.com/thread-1376-1-1.html
### CAFS/SUSTC/Eli Lilly/University of Macau
### Update Log: 2023-12-31 First version
### Update Log: 2024-12-09 by juan zhang (492482942@qq.com)
###
rm(list=ls())
options(stringsAsFactors = F)
library(ggsci)
library(dplyr)
library(future)
library(Seurat)
library(clustree)
library(cowplot)
library(data.table)
library(ggplot2)
library(patchwork)
library(stringr)
library(qs)
library(Matrix)
# 创建目录
getwd()
gse <- "GSE243013"
dir.create(gse)
# 下载raw文件夹
if(F) {
# https://mp.weixin.qq.com/s/uEso7yRZB300MnMhSpXH_Q
library(GEOquery)
# filter_regex: 指定下载的
# fetch_files = F, 返回下载链接
getGEOSuppFiles(gse,fetch_files = F)[,2]
}
up_pos <- rio::import('GSE243013/B_UMAP.csv' ,data.table = F)
head(up_pos)
meta <- rio::import('GSE243013/GSE243013_NSCLC_immune_scRNA_metadata.csv.gz')
head(meta)
df <- merge(up_pos,meta,by='cellID')
colnames(df)
df <- df[,c(2,3,11)]
colnames(df) <- c('UMAP_1','UMAP_2','Cluster')
df$label <- "B cells"
head(df)
使用ggplot2绘图,秘诀在于: geom_point(size = 0.03,shape = 16, stroke = 0)
color <- c("#919ac2","#ffac98","#70a4c8","#a5a9af","#63917d","#dbd1b4","#6e729a","#9ba4bd","#c5ae5f","#b9b8d6")
library(ggh4x)
p <- ggplot(df, aes(x = UMAP_1, y = UMAP_2, color = Cluster)) +
geom_point(size = 0.03,shape = 16, stroke = 0) +
scale_color_manual(values = color) +
facet_grid(~label) +
theme_classic() + # 使用简洁主题
theme( plot.background = element_blank(), # 移除背景
panel.grid.major = element_blank(), # 移除主要网格线
panel.grid.minor = element_blank(), # 移除次要网格线
margin = margin(), # 增加顶部边距
axis.title.x = element_blank(), # 移除x轴标题
axis.title.y = element_blank(), # 移除y轴标题
axis.text = element_blank(), # 移除坐标轴刻度标签
axis.ticks = element_blank(), # 移除坐标轴刻度线
axis.line = element_line(colour = "black", size = 0.3,
arrow = arrow(length = unit(0.1, "cm"))), # 加粗坐标轴并添加箭头
strip.background = element_rect(fill = '#e6bac5',color=NA),
strip.placement = 'outside',
strip.text = element_text(size = 8),
legend.position = "none",
aspect.ratio = 1) +
scale_x_continuous(limits = c(min(df$UMAP_1), max(df$UMAP_1)) ) + # 设置x轴范围
scale_y_continuous(limits = c(min(df$UMAP_2), max(df$UMAP_2)) ) # 设置y轴范围
p
ggsave(filename = "BCells_Umap.png",height = 2,width = 2,plot = p,dpi = 300,bg = "white")
图例绘制#
这里图例单独绘制:
ggplot(data = df, aes(x = UMAP_1, y = UMAP_2, color = Cluster)) +
geom_point(size = 0, shape = 16,stroke = 0) +
theme_void()+
scale_color_manual(values = color, name = '') +
theme( aspect.ratio = 1,
legend.position = 'bottom',
plot.margin = margin(0,0,0,0) ) +
guides(color = guide_legend( ncol = 2, override.aes = list(size = 2, alpha = 1) )) +
theme(legend.text = element_text(size = 5),
legend.spacing.y = unit(0, 'cm'),
legend.key.height = unit(0,"cm"),
legend.box.spacing = unit(0, 'cm'))
ggsave( "FigureS1C_legend.pdf", width = 3.5, height = 6, dpi = 500 )
注意上面图片的保存格式,最后将两个图组合在一起就可以啦!
多个亚群都绘制然后用PS软件拼装在一起!
此外,我们的生信入门班每月都有一期,最近一期在9月8号开课, 生信入门&数据挖掘线上直播课9月班
报名咨询#
招生对象#
「生信入门班:」 生物、医学、农学等方向需要学习生物信息学数据分析的人,本科、硕博、生信相关公司职员、医生等。
「数据挖掘班:」 医学、网络药理学等方向需要利用生物信息学工具挖掘公共数据以及做下游分析的人,往期学员以医学生、医生为主。
「选择困难症患者指南:」 非医学方向直接选择生信入门班(3699元)。 医学相关方向两个课程均适用,按需选择: 如果你只需要挖掘公共数据,或者从公司提供的表达矩阵开始做后续分析,可以选择数据挖掘班(2899元)。 如果你需要自己做上游+下游分析,选择生信入门班。 如果你还是选择困难,两个都要,联合报名优惠价4199元。
「注:」 两个班都有R语言课程,是完全一致的;也都有下游分析内容,数据挖掘班的下游分析有更多的医学方向针对性,比如生存分析,数据挖掘文章图表复现等。
关于答疑#
答疑我们诚意十足,真心满满,典型的问题我们会给出详细的答疑,之前答疑合集:
培训内容#
快来上车,风里雨里就等你!#
绘图小技巧2025 · 目录
闪记
复制 LaTeX 公式