前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R tips:ggplot2点图排序

R tips:ggplot2点图排序

作者头像
生信菜鸟团
发布2025-06-08 12:40:13
发布2025-06-08 12:40:13
460
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团

使用Seurat在UMAP坐标上绘制基因表达量图的时候,可能会遇到一个问题:由于单细胞的基因表达较为稀疏,而在细胞数量太多的情况下,可能会导致基因表达图几乎看不到趋势,这个时候可以考虑将表达量高的点优先绘制在上层以突出显示有表达量的细胞。

Seurat的order参数

Seurat绘制基因表达量的函数是FeaturePlot,它有一个参数order,可以根据基因表达量排序,让表达量高的细胞展示在上层,如下图所示:

  1. library(tidyverse)
  2. library(Seurat)
  3. all_data <- readRDS("PATH OF YOUR SINGLE CELL RDS")
  4. p1 <- all_data %>%FeaturePlot(features ="JAG1")
  5. p2 <- all_data %>%FeaturePlot(features ="JAG1", order = TRUE)
  6. patchwork::wrap_plots(p1, p2)
图片
图片

可以看到右图在添加了order参数后,JAG1的表达量比左图明显。

ggplot2对象的data slot

除了在绘图的时候添加order = TRUE之外,由于FeaturePlot函数返回的是一个ggplot2对象,这种效果我们也可以通过修改ggplot2对象的data slot实现。

ggplot2对象的data slot是绘图时所使用的数据,由于ggplot2对象是在print的时候才会进行实际的图形绘制,因此在真正查看图形之前,都可以先改掉data的数据顺序,从而实现点排序的效果。

  1. p3 <- p1
  2. p3$data <- arrange(p3$data, JAG1)
  3. patchwork::wrap_plots(p1, p3)

这个图的结果和上图是一样的。

这个思路其实也是可以拓展的,比如如果觉得点太多了,但是又不想直接subset原来的单细胞对象,则可以对这个data数据处理。

  1. p3$data <- p3$data %>% slice_sample(prop = 0.3)
  2. patchwork::wrap_plots(p1, p3)

在下采样了30%的点后,可以看到右图的点明显比左图稀疏了。

图片
图片
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Seurat的order参数
  • ggplot2对象的data slot
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档