最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

SCpubr:一个单细胞数据绘图大全的R包

网站源码admin2浏览0评论

SCpubr:一个单细胞数据绘图大全的R包

今天给大家介绍一个可以对单细胞数据绘制各种各样图片的R包:Scpubr!这个包宣称:以最小的努力生成尽可能的高质量的图表,这些图表可以直接用于或仅需进行最小修改即可用于研究文章

学习网址:/

0.安装

代码语言:javascript代码运行次数:0运行复制
## 使用西湖大学的 Bioconductor镜像
options(BioC_mirror=";)
options("repos"=c(CRAN="/"))
install.packages("SCpubr")

# 检测安装包是否都安装上了
library(SCpubr)

1.示例数据

这里就用经典的pbmc3k吧,下载地址:

代码语言:javascript代码运行次数:0运行复制
rm(list=ls())
library(Seurat)
library(SCpubr)

# 加载数据
load("pbmc3k.final.Rdata")
pbmc3k.final

# An object of class Seurat 
# 13714 features across 2700 samples within 1 assay 
# Active assay: RNA (13714 features, 2000 variable features)
# 3 layers present: counts, data, scale.data
# 3 dimensional reductions calculated: pca, umap, tsne

2.绘图

这个包有非常多的可视化方法,一一看下!

2.1 umap/tsne散点图

.html

  • plot.axes = TRUE:加不加坐标轴
  • legend.nrow = 3:设置图例显示的行数
  • label = TRUE:加不加细胞类型标签
  • label.box = FALSE:细胞类型标签加不加方框
  • legend.position = "none":需不需要图例
  • legend.position = "right":图例的位置
代码语言:javascript代码运行次数:0运行复制
# 散点图
# SCpubr's DimPlot.
p2 <- do_DimPlot(sample = pbmc3k.final, plot.axes = TRUE,legend.ncol = 1,pt.size = 0.5,
                 label = F,label.box = FALSE,legend.position = "right")
p2

这个地方有非常多的参数可以调整,我尝试了一些参数,结果如下:

2.2 FeaturePlot

这个地方的图可以绘制连续值的任何特征如基因,metadata中的某列:

  • plot.title = "CD3D":添加标题
  • legend.length = 12:调整图例的长和宽
  • legend.width = 1:调整图例的长和宽
  • legend.position = "right":图例的位置
代码语言:javascript代码运行次数:0运行复制
# 特征图
# SCpubr's Feature Plot.
p2 <- do_FeaturePlot(sample = pbmc3k.final, features = "CD3D",plot.title = "CD3D",
                    legend.position = "right",order =T,legend.length = 12,
                    legend.width = 1)
p2

这里也是一些常规参数,我选了一些如下:

2.3 密度图

这个包还封装了 Nebulosa 包的功能,Nebulosa 我们之前介绍过:5种方式美化你的单细胞umap散点图

绘制 一些marker基因 的核密度估计图:

代码语言:javascript代码运行次数:0运行复制
# 单个基因
p <- do_NebulosaPlot(sample =pbmc3k.final, features = "CD14",legend.position = "right")
p

# 两个基因
p <- do_NebulosaPlot(sample =pbmc3k.final, features = c("CD14","CD3D"),legend.position = "right")
p

# 两个基因共表达
p <- do_NebulosaPlot(sample =pbmc3k.final, features = c("CD14","CD3D"),joint = T,return_only_joint = F,plot.axes = T,
                     legend.position = "none")
p

2.4 小提琴图

  • plot_boxplot = FALSE:不绘制象限图
  • axis.text.x.angle = 90:坐标轴标签旋转
  • y_cut = 25000:添加一条阈值线
  • line_width = 2:小提琴框线的宽度
  • boxplot_width = 0.1:箱线图的宽度
代码语言:javascript代码运行次数:0运行复制
p <- do_ViolinPlot(sample = pbmc3k.final, features = "nCount_RNA", y_cut = 5000,
                   plot_boxplot =T,axis.text.x.angle = 90,
                   line_width = 1.5,boxplot_width = 0.1,legend.position = "none")
p

2.5 山峦图

关于山峦图,我们介绍过两篇个性化定制:

  • Nat Commun同款山脊图:千里江山图
  • raincloud云雨图:一图囊括小提琴+箱线图+散点图

参数修改:

  • continuous_scale = TRUE:颜色映射改为连续值
  • viridis_direction = 1:设置颜色渐变的方向,由大到小对应的颜色
  • compute_custom_quantiles = TRUE:绘制四分位数
  • quantiles = c(0.1, 0.5, 0.75):添加分位数具体的位置
代码语言:javascript代码运行次数:0运行复制
# Compute the most basic ridge plot.
DefaultAssay(pbmc3k.final)
p <- do_RidgePlot(sample = pbmc3k.final,feature = "nFeature_RNA",continuous_scale = T,sequential.direction = 1,
                  compute_quantiles = TRUE,compute_custom_quantiles = TRUE,
                  quantiles = c(0.1, 0.5, 0.75))
p

选了一个调整各个参数的结果:

2.5 气泡图

关于特征基因气泡图,我们前面也分享过啦:顶刊Cell杂志单细胞特征基因气泡图

可以接受基因向量和基因list对象:

  • dot_border = F:气泡图是否加边圈
代码语言:javascript代码运行次数:0运行复制
genes <- list("Naive CD4+ T" = c("IL7R", "CCR7"),
              "CD14+ Mono" = c("CD14", "LYZ"),
              "Memory CD4+" = c("S100A4"),
              "B" = c("MS4A1"),
              "CD8+ T" = c("CD8A"),
              "FCGR3A+ Mono" = c("FCGR3A", "MS4A7"),
              "NK" = c("GNLY", "NKG7"),
              "DC" = c("FCER1A", "CST3"),
              "Platelet" = c("PPBP"))

p <- do_DotPlot(sample =pbmc3k.final, features = genes,dot_border = F)
p

2.6 barplot

这里可以对细胞数做各种统计:

  • flip = TRUE:坐标轴交换
代码语言:javascript代码运行次数:0运行复制
head(pbmc3k.final)
p2 <- do_BarPlot(sample = pbmc3k.final, position = "stack",
                         group.by = "celltype", 
                         legend.position = "none",
                         plot.title = "Number of cells per cluster", 
                         flip = T)
p2

2.7 冲击图

这个图可以展示不同层次注释之间的复杂关系:

代码语言:javascript代码运行次数:0运行复制
# Use viridis scales.
sample <- readRDS(system.file("extdata/seurat_dataset_example.rds", package = "SCpubr"))
sample
head(sample)
# Generate a more fine-grained clustering.
sample$annotation <- ifelse(sample$seurat_clusters %in% c("0", "3"), "A", "B")
table(sample$annotation, sample$seurat_clusters)
p <- do_AlluvialPlot(sample = sample, first_group = "annotation",last_group = "seurat_clusters",
                     fill.by = "annotation",stratum.fill = "grey80")
p

2.8 火山图

这个示例数据只有14个基因,将就看吧:

代码语言:javascript代码运行次数:0运行复制
# 火山图
# Modify number of gene tags.
# Retrieve DE genes.
de_genes <- readRDS(system.file("extdata/de_genes_example.rds", package = "SCpubr"))
head(de_genes)
de_genes

p <- do_VolcanoPlot(sample = sample,de_genes = de_genes,n_genes = 15)
p

Note

这个包还有很多其他的有意思的图,快去看看吧~

此外,需要注意的是这个包的版本,教程中为v1.1.2,我这里安装后的版本如下,参数发生了一些变化:

代码语言:javascript代码运行次数:0运行复制
packageVersion("SCpubr")
[1] ‘2.0.2’
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-17,如有侵权请联系 cloudcommunity@tencent 删除finallegendsample数据图表
发布评论

评论列表(0)

  1. 暂无评论