首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R tips:如何折叠DotPlot的细胞标注

R tips:如何折叠DotPlot的细胞标注

作者头像
生信菜鸟团
发布2025-07-08 17:36:09
发布2025-07-08 17:36:09
1350
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团

Seurat绘制细胞的marker DotPlot时,如果细胞名称过长或者相应细胞的marker gene太少则可能会导致细胞名称显示不全,看如下实例,以Seurat自带的pbmc_small数据集为例,寻找其差异表达gene作为绘制Dotplot的marker gene。

代码语言:txt
复制
library(Seurat) 
library(tidyverse) 
all_markers <- 
  pbmc_small %>% 
FindAllMarkers(group.by="RNA_snn_res.0.8") 
marker_gene <- 
  all_markers %>% 
  group_by(cluster)%>% 
  dplyr::filter( 
    p_val <0.05, 
    pct.1- pct.2>0.2 
)%>% 
  slice_max(avg_log2FC, n =5)%>% 
  dplyr::select(cluster, gene)%>% 
  deframe() 
marker_gene 
# 0        0        0        0        0        1        1        1        1        1  
# "GZMM"   "GNLY"   "PRF1"   "GZMA"   "CTSW" "S100A8"   "CD14" "S100A9"   "FPR1"  "ASGR1"  

根据差异基因的类别,指定0是cytotoxic T lymphocyte,1是myeloid cells,并绘制DotPlot:

代码语言:txt
复制
names(marker_gene)<- 
  marker_gene %>% 
  names()%>% 
  fct_recode( 
"cytotoxic T lymphocyte"='0', 
"myeloid cells"='1' 
) 
p <- 
DotPlot( 
    pbmc_small, 
group.by="RNA_snn_res.0.8", 
    features = marker_gene 
) 
 p 

理论上讲,这个图调宽是可以避开显示不全的问题的,但是实际场景中,这个图不可能无限加宽,不然比例失调。本例中每个细胞是5个marker基因,但是实际绘图是有可能只展示一个marker基因的,这个时候遮挡几乎是必然发生的事情,而肆意加宽图片往往都是很受限制的行为。

为了模拟效果,这里设置了一个较为窄的宽度,可以看到cell label的折叠状态:

图片
图片

可以发现上图有两个问题:x轴文字遮挡和上面的细胞label遮挡。x轴遮挡好解决,只需要加上Seurat的RotatedAxis即可。

  1. p2 <- p +RotatedAxis()
  2. p2

如果需要修改cell label遮挡的问题,可以使用ggtext包的element_markdown格式,它可以渲染markdown语法和部分html标记。因此可以选择在特定位置将字符替换为html的换行符即可。

有两个策略,直接修改marker_gene的名称,重新绘图,这个操作比较简单,不再赘述。第二方法是可以修改DotPlot返回的ggplot对象的data slot,如下所示:

代码语言:txt
复制
p3 <- p2 
p3$data$feature.groups  <- 
  p3$data$feature.groups %>% 
  str_wrap(width =20)%>% 
  str_replace_all("\\n","<br/>") 
p3 <- p3 + 
  theme( 
    strip.text = ggtext::element_textbox_simple(halign =0.5), 
) 
p3 

str_wrap函数可以定义在多少字符的位置换行,而且str_wrap还可以只在空格位置换行,上述代码是选择第20位字符附近的空格处换行,由于str_wrap是补充了一个换行符,因此str_replace_all再将其转换为html换行符br即可,效果如下:

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档