【TOP生物信息】CNS图表复现,单细胞marker基因展示的另一种方式——蜂巢图

扫码关注下方公粽号,回复推文合集,获取400页单细胞学习资源!

在这里插入图片描述

本文共计1359字,阅读大约需要4分钟。

Sten Linnarsson大神的单细胞绘图堪称极致美学,在这里,小编选择了发表在nature上展示marker基因的绘图进行复现。

图片

本文目录如下:

  • 准备数据
  • 常规小提琴图展示
  • 使用geom_beeswarm()绘制
  • 使用geom_quasirandom()绘制
  • 更换配色
  • 更换主题
  • 获取代码和数据
  • 参考
  • 往期回顾

准备数据

首先处理单细胞数据为ggplot2绘图所需格式,准备的数据包括marker基因名(gene),单个细胞编号名(CB),细胞分群命名(celltype),基因表达量(exp)作为输入数据,进行melt转换后得到如下展示的数据表(vln.df)

library(tidyverse)
library(ggplot2)
library(ggbeeswarm)
library(scales)
library(reshape2)
vln.df <- read.csv(file = 'vln.df.0319.csv',row.names = 1)
vln.df$gene = factor(vln.df$gene,levels = c("Krt18","Krt14","Mbp","Cd34","Pdgfra","Cldn5","Pecam1","Acta2","Myh11","Ly6g","S100a8","Kit","Ms4a2","Mki67","Stmn1","Lyz2","Retnla","Cd74","Cd83","Jchain","Mzb1","Cd19","Cd79a","Cd3d","Cd3g","Klrd1","Nkg7")
)
head(vln.df)> head(vln.df)gene                     CB       exp celltype
1  Krt18 Brep4_TAGACTGCACTTGGGC 0.7077087   cell_B
2  Krt14 Brep4_TAGACTGCACTTGGGC 3.2859138   cell_B
3    Mbp Brep4_TAGACTGCACTTGGGC 0.0000000   cell_B
4   Cd34 Brep4_TAGACTGCACTTGGGC 0.0000000   cell_B
5 Pdgfra Brep4_TAGACTGCACTTGGGC 0.0000000   cell_B
6  Cldn5 Brep4_TAGACTGCACTTGGGC 0.0000000   cell_B

从上图观察发现,作者并没有用传统的dotplot或者violinplot进行marker基因展示,而像是用散点图绘制而来,因此我们尝试是否可以在小提琴图的基础上进行改进。

常规小提琴图展示

先看一下小提琴图的展示效果

p1 <- vln.df%>%ggplot(aes(celltype,exp),color=factor(celltype))+geom_violin(aes(fill=celltype),scale = "width")+ facet_grid(gene~.,scales = "free_y")+scale_y_continuous(expand = c(0,0))+theme_bw()+theme(panel.grid = element_blank(),axis.title.x.bottom = element_blank(),axis.ticks.x.bottom = element_blank(),axis.text.x.bottom = element_text(angle = 45,hjust = 1,vjust = NULL,color = "black",size = 14),axis.title.y.left = element_blank(),axis.ticks.y.left = element_blank(),axis.text.y.left = element_blank(),legend.position = "none",panel.spacing.y = unit(0, "cm"),strip.text.y = element_text(angle=0,size = 14,hjust = 0),strip.background.y = element_blank())
p1
ggsave("图01.png",width = 12,height = 20,units = "cm")

图片

使用geom_beeswarm()绘制

通过一番搜寻发现,可以用ggbeeswarm包绘制散点图,ggbeeswarm提供了两种使用ggplot2创建蜂群图的方法。一个是geom_beeswarm(),另一个是geom_quasirandom(),我们分别进行尝试

首先使用geom_beeswarm()试一试。注意!散点图的绘制会比较慢,需要等待一段时间

p2 <- vln.df%>%ggplot(aes(celltype,exp,color=factor(celltype)))+geom_beeswarm(cex = 0.1)+  #用蜂巢图替代小提琴图facet_grid(gene~.,scales = "free_y")+scale_y_continuous(expand = c(0,0))+theme_bw()+theme(panel.grid = element_blank(),axis.title.x.bottom = element_blank(),axis.ticks.x.bottom = element_blank(),axis.text.x.bottom = element_text(angle = 45,hjust = 1,vjust = NULL,color = "black",size = 14),axis.title.y.left = element_blank(),axis.ticks.y.left = element_blank(),axis.text.y.left = element_blank(),legend.position = "none",panel.spacing.y = unit(0, "cm"),strip.text.y = element_text(angle=0,size = 14,hjust = 0),strip.background.y = element_blank())
ggsave("图02.pdf",plot = p2,width = 12,height = 20,units = "cm")
p2=ggrastr::rasterise(p2, dpi = 300)#得到的图太大使用ggrastr包降低分辨率进行保存
ggsave("图02b.pdf",plot = p2,width = 12,height = 20,units = "cm")

这里有一个小技巧:单细胞的点非常多,直接保存文件很大,可以使用ggrastr::rasterise()降低分辨率进行保存。

图片

图片效果并不好,原因是ggbeeswarm会横向展开所有点。单细胞数据点太多,图片装不下,point往两边无限展开,字就往中间挤。

所有点少的时候可以用ggbeeswarm这个函数画蜂巢图。

使用geom_quasirandom()绘制

我们来看看另一个函数geom_quasirandom,当点很多的时候,该函数可以处理过度绘图(overplotting)的问题。

p3 <- vln.df%>%ggplot(aes(celltype,exp,color=factor(celltype)))+geom_quasirandom(size=0.02,method = "smiley")+ #设置散点大小,因为单细胞测序数量很多,点可以尽量小一点,否则看不出效果facet_grid(gene~.,scales = "free_y")+scale_y_continuous(expand = c(0,0))+theme_bw()+theme(panel.grid = element_blank(),axis.title.x.bottom = element_blank(),axis.ticks.x.bottom = element_blank(),axis.text.x.bottom = element_text(angle = 45,hjust = 1,vjust = NULL,color = "black",size = 14),axis.title.y.left = element_blank(),axis.ticks.y.left = element_blank(),axis.text.y.left = element_blank(),legend.position = "none",panel.spacing.y = unit(0, "cm"),strip.text.y = element_text(angle=0,size = 14,hjust = 0),strip.background.y = element_blank())
ggsave("图03.pdf",plot = p3,width = 12,height = 20,units = "cm")

图片

与原图有些接近了,下一步修改颜色,原图采用了单一的红色配色,表达量用透明度进行区分,这里我们采用黄蓝渐变的配色方案,如果不会配色可以问chatGPT哒

更换配色

my_colors <- colorRampPalette(c("#1A5276", "#F7DC6F"))(15)p4 <- vln.df%>%ggplot(aes(celltype,exp,color=factor(celltype),alpha=abs(exp)))+ #用透明度映射基因表达量geom_quasirandom(size=0.02,method = "smiley")+facet_grid(gene~.,scales = "free_y")+scale_y_continuous(expand = c(0,0))+scale_color_manual(values = my_colors)+ #给每个celltype添加颜色theme_bw()+theme(panel.grid = element_blank(),axis.title.x.bottom = element_blank(),axis.ticks.x.bottom = element_blank(),axis.text.x.bottom = element_text(angle = 90,hjust = 1,vjust = 0.5,color = "black",size = 14),axis.title.y.left = element_blank(),axis.ticks.y.left = element_blank(), axis.text.y.left = element_blank(),legend.position = "none",panel.spacing.y = unit(0, "cm"),strip.text.y = element_text(angle=180,size = 14,hjust = 1),strip.background.y = element_blank())
ggsave("图04.pdf",plot = p4,width = 12,height = 20,units = "cm")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PVitPKU1-1684650313266)(data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)]’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

更换主题

最后,更换theme去掉分面网格线,就得到美美的图啦~

p5 <- vln.df%>%ggplot(aes(celltype,exp,color=factor(celltype),alpha=abs(exp)))+geom_quasirandom(size=0.02,method = "smiley")+facet_grid(gene~.,scales = "free_y")+scale_y_continuous(expand = c(0,0))+scale_color_manual(values = my_colors)+theme_classic()+ #更换theme主题theme(axis.title.x.bottom = element_blank(),#axis.ticks.x.bottom = element_blank(),#添加刻度axis.text.x.bottom = element_text(angle = 90,hjust = 1,vjust = 0.5,color = "black",size = 14),axis.title.y.left = element_blank(),axis.ticks.y.left = element_blank(),axis.text.y.left = element_blank(),legend.position = "none",panel.spacing.y = unit(0, "cm"),strip.text.y = element_text(angle=180,size = 14,hjust = 1),strip.background.y = element_blank())
ggsave("图05.pdf",plot = p5,width = 12,height = 20,units = "cm")

图片

需要注意的是,细胞量太大会导致散点图看起来不明显,因此该绘图方法更适合细胞数量较少的单细胞marker基因展示

获取代码和数据

代码和测试数据请关注公粽号获取

在这里插入图片描述

参考

原图来自文献:Molecular architecture of the developing mouse brain

绘图代码参考:

https://r-charts.com/distribution/ggbeeswarm/ https://github.com/eclarke/ggbeeswarm


往期回顾

01.marker展示_聚类和热图组合

图片01.marker展示_聚类和热图组合

02.marker展示_堆叠小提琴图

图片02.marker展示_堆叠小提琴图

03.两组比较_差异基因数目展示

图片03.两组比较_差异基因数目展示

04.两组比较_差异基因展示

图片04.两组比较_差异基因展示

05.两组比较_基因集分数添加显著性

图片05.两组比较_基因集分数添加显著性

06.feature展示

图片06.feature展示

07.KEGG富集柱形图,并添加通路注释信息

图片07.KEGG富集结果展示

08.细胞通讯_两组比较_气泡图

图片08.细胞通讯_两组比较_气泡图

09.细胞通讯_两组比较_连线图

图片09.细胞通讯_两组比较_连线图

10.KEGG富集结果的圆圈图

图片10.KEGG富集结果的圆圈图

11.marker展示_分组气泡图

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/42298.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue2从入门到精通】深入浅出,带你彻底搞懂Vue2组件通信的9种方式

文章目录 人工智能福利文章Vue组件间通信分类1.props / $emit1.1 父组件向子组件传值1.2 子组件向父组件传值 2.$parent / $children3.ref / $refs3.1 ref作用于组件3.2 ref作用于Html标签3.3 $nextTick() 4.EventBus &#xff08;$emit / $on&#xff09;4.1 初始化4.2 发送事…

三国鼎立:ChatGPT、百度文心一言、微软 New Bing

推荐国内可访问chatGPT: chatGTP --------------------------------------------------------------------------------------------------------------- ChatGTP&#xff1a;更像是三国中魏国&#xff0c;地大物博用户多。 百度文心一言&#xff1a;更像是三国中的蜀国&…

在Mac中设置Ctrl+C/V进行复制/粘贴

在win环境转到mac环境,感觉最大的就是这个⌘键了,看了很多帖子感觉都是片面的 进行系统偏好设置 > 键盘 > 快捷键 > App快捷键点击如图加号 这一步很重要,比如你要修改访达的复制粘贴,那就代打开访达 根据访达的编辑一栏自定义修改 菜单标题就是 全选 键盘快捷键自…

如何在Mac上复制和粘贴

如果您是具有Windows PC背景的新Mac用户&#xff0c;则可能想知道如何在macOS中使用典型的复制和粘贴命令。 在Windows中&#xff0c;“复制”和“粘贴”键组合分别为Control-C和Control-V。在Mac上&#xff0c;这非常相似–您要做的就是使用Command&#xff08;⌘&#xff09;…

mac截图复制到剪贴板_如何一次将多个内容复制到Mac的剪贴板中

mac截图复制到剪贴板 You know that thing where you copy something important, forget to paste it anywhere, then copy something else? It sucks, because the important thing you copied first is gone. 您知道要复制重要内容的东西&#xff0c;忘记将其粘贴到任何地方…

Mac复制改为拷贝

在默认情况下&#xff0c;mac电脑的复制为复制粘贴&#xff0c;即会生成一个副本文件&#xff0c;并没有达到Win下复制功效。 不知你是否遇到过&#xff0c;下面贴图介绍如何调整为真正的复制功能。 1.打开 系统偏好设置 2.选择 键盘 3.快捷键-App快捷键 然后删除 复制 快捷键…

Mac mini 使用普通键盘设置 Windows 的粘贴、复制、剪切习惯

问题描述 通常我们会习惯性用左手小拇指按最左下角的 ctrl 键作为功能前缀键&#xff0c;进行复制、粘贴、剪切等操作&#xff0c;但将普通键盘接到 macOS 设备上&#xff0c;会将 windows 徽标键视为 command 键&#xff0c;此时习惯了 Windows 系统的朋友进行复制、粘贴、剪…

mac item2 复制会话session

按照如下图红框内设置 Command中输入ssh 常登陆的ip&#xff08;如果不配置这一步则复制session时还要自己输入ssh命令&#xff0c;只是不需要输入密码而已&#xff09; 在自己的mac终端, vim ~/.ssh/config 添加 host *ControlMaster autoControlPath ~/.ssh/master-%r%h:…

WindowsMac剪贴板如何存储多条复制记录

Windows版 1.第一步点击电脑左下方“开始菜单”按钮。 2..点击 “设置”按钮。 3.打开设置之后点击"系统"。 4.然后下拉找到“剪贴板”。 5.选中剪贴板&#xff0c;然后在右侧即可开启剪贴板历史记录功能。 按“WindowsV”组合键键即可打开剪贴板。复制或者剪切过的…

五个最好的复制/粘贴的Mac App应用

如果你刚用Mac&#xff0c;之前是用Windows电脑的&#xff0c;第一个问题就会发现&#xff0c;Mac上的复制/粘贴找不到了。如果你也有同样的问题&#xff0c;或者你在找Mac上有没有好用的剪贴板管理工具&#xff0c;可以在下面的文章中找到答案。 Mac上怎样优雅的复制/粘贴 c…

Mac简单易用的复制软件——“TouchCopy”

TouchCopy是Mac平台上一款简单易用的复制软件&#xff0c;可以轻松的将你的照片、视频、通讯录、文档、日历复制到pc端或者是磁盘里。有需要的朋友欢迎前来macdown下载体验&#xff01; 功能 1、将音乐从iPhone / iPod / iPad传输到iTunes将音乐从iPod或iOS设备复制到PC或Mac硬…

苹果Mac电脑的复制粘贴不能用了

复制 (⌘ C) 和粘贴 (⌘ V) 是使用Mac电脑过程中遇到频率非常高的快捷组合键&#xff0c;突然你发现它们不能使用了&#xff0c;会非常崩溃。macw小编今天为大家带来详细解决办法&#xff0c;让您的复制粘贴重新启用起来&#xff01; 为什么 Mac 剪贴板不起作用 我们在 Mac…

Mac下iterm2 克隆会话功能

因为每次需要先登录跳转机&#xff0c;再登录开发机&#xff0c;输入两次密码&#xff0c;过于繁琐&#xff0c;所以上网找了iterm下克隆会话功能。 网上说command下的command也要配置&#xff0c;亲测不用&#xff0c;只选中下面的reuse previous sessions’s directory就行。…

花启宝是什么软件,来聊一聊“花启宝”的详情

很多人在问我&#xff0c;你在做的软件是什么&#xff1f;我本人也就是通过它慢慢学习成长起来的。还是一个网友推荐的&#xff0c;现在他对我来说算是大佬了&#xff0c;已经单飞了&#xff0c;好久都没有联系了&#xff0c;呵呵&#xff0c;真是人往高处走&#xff0c;水往低…

chatgpt赋能python:Python抢商品:自动化实现秒杀购物的利器

Python抢商品&#xff1a;自动化实现秒杀购物的利器 随着互联网和电商的高度融合&#xff0c;电商平台受到越来越多的用户关注和青睐。在线购物已成为人们日常生活中必不可少的一部分&#xff0c;不管是网购小白还是技术大牛&#xff0c;都喜欢在各种平台上刷到想要的商品。但…

chatgpt赋能python:Python自动购买商品的好处、方法及其实现

Python自动购买商品的好处、方法及其实现 越来越多的人通过网购方式购买商品&#xff0c;为了避免购物“抢购”难的烦恼&#xff0c;很多人选择了自动化脚本的方式来帮助他们完成网购。这其中&#xff0c;Python的应用越来越广泛。本文将详细介绍Python自动购买商品的好处、方…

在线AI智能写诗工具

调用了百度智能API,完成了这个在线AI智能写诗工具&#xff0c;可以写首诗送你*朋友 来源:https://www.toolfk.com/tool-online-poem

AI 智能写情诗、藏头诗模型训练

一、AI 智能情诗、藏头诗展示 最近使用PyTorch的LSTM训练一个写情诗&#xff08;七言&#xff09;的模型&#xff0c;可以随机生成情诗、也可以生成藏头情诗。 在特殊的日子用AI生成一首这样的诗&#xff0c;是不是很酷&#x1f60e;&#x1f498;&#xff01;下面分享下AI 智…

OpenAI新作Shap-e算法使用教程

一、知识点 Shap-e是基于nerf的开源生成3d模型方案。它是由如今热火朝天的Open AI公司&#xff08;chatgpt&#xff0c;Dell-E2&#xff09;开发、开源的。Shap-e生成的速度非常快&#xff0c;输入关键词即可生成简单模型&#xff08;限于简单单体模型&#xff09;。 二、环境…

游戏策划

游戏策划:注意人员安排与时间管控等多方面因素 第一次策划&#xff0c;仅供参考 其他同伴们的更多游戏策划