当前位置: 首页 > news >正文

Seurat 中的数据可视化方法

本文[1]将使用从 2,700 PBMC 教程计算的 Seurat 对象来演示 Seurat 中的可视化技术。您可以从 SeuratData[2] 下载此数据集。

SeuratData::InstallData("pbmc3k")

library(Seurat)
library(SeuratData)
library(ggplot2)
library(patchwork)
pbmc3k.final <- LoadData("pbmc3k", type = "pbmc3k.final")
pbmc3k.final$groups <- sample(c("group1""group2"), size = ncol(pbmc3k.final), replace = TRUE)
features <- c("LYZ""CCL5""IL32""PTPRCAP""FCGR3A""PF4")
pbmc3k.final
## An object of class Seurat 
## 13714 features across 2638 samples within 1 assay 
## Active assay: RNA (13714 features, 2000 variable features)
##  3 layers present: data, counts, scale.data
##  2 dimensional reductions calculated: pca, umap

marker 特征表达的五种可视化

1. RidgePlot

# Ridge plots - from ggridges. Visualize single cell expression distributions in each cluster
RidgePlot(pbmc3k.final, features = features, ncol = 2)
alt
alt

2. VlnPlot

# Violin plot - Visualize single cell expression distributions in each cluster
VlnPlot(pbmc3k.final, features = features)
alt
# Violin plots can also be split on some variable. Simply add the splitting variable to object
# metadata and pass it to the split.by argument
VlnPlot(pbmc3k.final, features = "percent.mt", split.by = "groups")
alt

3. FeaturePlot

# Feature plot - visualize feature expression in low-dimensional space
FeaturePlot(pbmc3k.final, features = features)
alt
# Plot a legend to map colors to expression levels
FeaturePlot(pbmc3k.final, features = "MS4A1")
alt
# Adjust the contrast in the plot
FeaturePlot(pbmc3k.final, features = "MS4A1", min.cutoff = 1, max.cutoff = 3)
alt
# Calculate feature-specific contrast levels based on quantiles of non-zero expression.
# Particularly useful when plotting multiple markers
FeaturePlot(pbmc3k.final, features = c("MS4A1""PTPRCAP"), min.cutoff = "q10", max.cutoff = "q90")
alt
# Visualize co-expression of two features simultaneously
FeaturePlot(pbmc3k.final, features = c("MS4A1""CD79A"), blend = TRUE)
img
img
# Split visualization to view expression by groups (replaces FeatureHeatmap)
FeaturePlot(pbmc3k.final, features = c("MS4A1""CD79A"), split.by = "groups")
alt

4. DotPlot

# Dot plots - the size of the dot corresponds to the percentage of cells expressing the
# feature in each cluster. The color represents the average expression level
DotPlot(pbmc3k.final, features = features) + RotatedAxis()
alt
# SplitDotPlotGG has been replaced with the `split.by` parameter for DotPlot
DotPlot(pbmc3k.final, features = features, split.by = "groups") + RotatedAxis()
alt

5. DoHeatmap

## Single cell heatmap of feature expression
DoHeatmap(subset(pbmc3k.final, downsample = 100), features = features, size = 3)
alt

新绘图函数

DimPlot

# DimPlot replaces TSNEPlot, PCAPlot, etc. In addition, it will plot either 'umap', 'tsne', or
# 'pca' by default, in that order
DimPlot(pbmc3k.final)
alt
pbmc3k.final.no.umap <- pbmc3k.final
pbmc3k.final.no.umap[["umap"]] <- NULL
DimPlot(pbmc3k.final.no.umap) + RotatedAxis()
alt

DoHeatmap

# DoHeatmap now shows a grouping bar, splitting the heatmap into groups or clusters. This can
# be changed with the `group.by` parameter
DoHeatmap(pbmc3k.final, features = VariableFeatures(pbmc3k.final)[1:100], cells = 1:500, size = 4,
    angle = 90) + NoLegend()
alt

将主题应用于绘图

使用 Seurat,所有绘图函数默认返回基于 ggplot2 的绘图,允许人们像任何其他基于 ggplot2 的绘图一样轻松捕获和操作绘图。

baseplot <- DimPlot(pbmc3k.final, reduction = "umap")
# Add custom labels and titles
baseplot + labs(title = "Clustering of 2,700 PBMCs")
alt
# Use community-created themes, overwriting the default Seurat-applied theme Install ggmin
# with remotes::install_github('sjessa/ggmin')
baseplot + ggmin::theme_powerpoint()
alt
# Seurat also provides several built-in themes, such as DarkTheme; for more details see
# ?SeuratTheme
baseplot + DarkTheme()
alt
# Chain themes together
baseplot + FontSize(x.title = 20, y.title = 20) + NoLegend()
alt

交互式绘图功能

Seurat 利用 R 的绘图库来创建交互式绘图。此交互式绘图功能适用于任何基于 ggplot2 的散点图(需要 geom_point 图层)。使用时,只需制作一个基于 ggplot2 的散点图(例如 DimPlot() 或 FeaturePlot())并将结果图传递给 HoverLocator()

# Include additional data to display alongside cell names by passing in a data frame of
# information.  Works well when using FetchData
plot <- FeaturePlot(pbmc3k.final, features = "MS4A1")
HoverLocator(plot = plot, information = FetchData(pbmc3k.final, vars = c("ident""PC_1""nFeature_RNA")))
alt

Seurat 提供的另一个交互功能是能够手动选择细胞以进行进一步研究。我们发现这对于小簇特别有用,这些小簇并不总是使用无偏聚类来分离,但看起来却截然不同。现在,您可以通过创建基于 ggplot2 的散点图(例如使用 DimPlot() 或 FeaturePlot(),并将返回的图传递给 CellSelector() 来选择这些单元格。CellSelector() 将返回一个包含所选点名称的向量,这样您就可以将它们设置为新的身份类并执行微分表达式。

例如,假设 DC 在聚类中与单核细胞合并,但我们想根据它们在 tSNE 图中的位置来了解它们的独特之处。

pbmc3k.final <- RenameIdents(pbmc3k.final, DC = "CD14+ Mono")
plot <- DimPlot(pbmc3k.final, reduction = "umap")
select.cells <- CellSelector(plot = plot)
alt

绘图配件

除了为绘图添加交互功能的新函数之外,Seurat 还提供了用于操作和组合绘图的新辅助功能。

# LabelClusters and LabelPoints will label clusters (a coloring variable) or individual points
# on a ggplot2-based scatter plot
plot <- DimPlot(pbmc3k.final, reduction = "pca") + NoLegend()
LabelClusters(plot = plot, id = "ident")
alt
# Both functions support `repel`, which will intelligently stagger labels and draw connecting
# lines from the labels to the points or clusters
LabelPoints(plot = plot, points = TopCells(object = pbmc3k.final[["pca"]]), repel = TRUE)
alt

绘制多个图之前是通过CombinePlot() 函数实现的。我们不赞成使用此功能,转而使用拼凑系统。下面是一个简短的演示,但请参阅此处的 patchwork[3] 包网站以获取更多详细信息和示例。

plot1 <- DimPlot(pbmc3k.final)
# Create scatter plot with the Pearson correlation value as the title
plot2 <- FeatureScatter(pbmc3k.final, feature1 = "LYZ", feature2 = "CCL5")
# Combine two plots
plot1 + plot2
alt
# Remove the legend from all plots
(plot1 + plot2) & NoLegend()
alt
Reference
[1]

Source: https://satijalab.org/seurat/articles/visualization_vignette

[2]

Data: https://github.com/satijalab/seurat-data

[3]

patchwork: https://patchwork.data-imaginist.com/

本文由 mdnice 多平台发布

http://www.lryc.cn/news/312546.html

相关文章:

  • ImportError: cannot import name ‘InterpolationMode‘
  • HSRP和VRRP
  • C及C++每日练习(1)
  • Oracle 12c dataguard查看主备库同步情况的新变化
  • 时间序列-AR MA ARIMA
  • Spring Boot(六十六):集成Alibaba Druid 连接池
  • leetcode 经典题目42.接雨水
  • 高防服务器的主要作用有哪些?
  • 【30 天 JavaScript 挑战】学习笔记
  • 生成 Linux/ubuntu/Debian 上已安装软件包的列表
  • 精品中国货出海wordpress外贸独立站建站模板
  • 使用Animated.View实现全屏页面可以向下拖动,松开手指页面返回原处的效果
  • 【教程】uni-app iOS打包解决profile文件与私钥证书不匹配问题
  • 预约自习室
  • 网络安全审计是什么意思?与等保测评有什么区别?
  • HarmonyOS学习——HarmonyOS习题
  • Python程序怎么让鼠标键盘在后台进行点击,不干扰用户其他鼠标键盘操作
  • HTML静态网页成品作业(HTML+CSS)——新年春节介绍网页设计制作(3个页面)
  • vue实现base64格式转换为图片
  • 【杂言】迟到的 2024 展望
  • 结构体(C语言进阶)(一)
  • 【react】对React Router的理解?常用的Router 组件有哪些
  • 生成式 AI
  • 云计算 3月6号 (crontab-计划任务 日志轮转 免密登录)
  • Windows Shell命令详解:入门指南
  • MogDB/openGauss关于PL/SQL匿名块调用测试
  • STP---生成树协议
  • 算法D38| 动态规划1 | 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
  • Vue教学13:组件的生命周期:掌握组件的每一个关键时刻
  • mitmproxy代理