单细胞差异基因火山图绘制

news2024/7/6 19:00:03

做完单细胞差异基因分析(FindMarkers/FindAllmarkers)之后,按照常规流程绘制出来的火山图看上去会很奇怪。

1、为什么火山图顶部聚集了很多基因?

这是由于单细胞有别于bulk的特性,会出现两组细胞之间的p值过于显著出现或接近0的情况,那么在取-log10之后的值会很大。

2、为什么火山图中间出现了空白

这是因为在进行FindMarkers时默认设置了一定的阈值,可以通过修改参数的阈值来修改自己的火山图(比如下边的示例代码中的min.pct和logfc.threshold参数)

markers <- FindMarkers(scRNA_tumor,ident.1 = 'acitve', only.pos = FALSE, 
                            min.pct = 0.25, logfc.threshold = 0.25)
常规火山图的代码:
#增加一列显著基因,待会标名字
markers$sign <- ifelse(markers$p_val_adj < 0.005 & abs(markers$avg_log2FC) > 2,
                       rownames(markers),NA)
#当然也可以自定义的,随机的
k <- c("TP53","CD34","CD68")
markers <- markers %>%
mutate(Sign = ifelse(rownames(markers) %in% k, rownames(markers), NA))

#自定义阈值
log2FC = 0.585
padj = 0.05

colnames(markers)
library(ggplot2)
library(ggrepel) # 这个R包用于添加基因名称
ggplot(data = markers, aes(x = avg_log2FC, y = -log10(p_val_adj))) +
  geom_point(alpha=0.4, size=3.5, aes(color=change)) +
  #scale_color_manual(values=c("blue", "grey","red"))+
  scale_color_manual('change',labels=c(paste0("down(",table(markers$change)[[1]],')'),
                                 'ns',
                                 paste0("up(",table(markers$change)[[3]],')' )),
                                 values=c("blue", "grey","red" ))+
  geom_vline(xintercept=c(-log2FC,log2FC),lty=4,col="black",linewidth=0.8) +
  geom_hline(yintercept = -log10(padj),lty=4,col="black",linewidth=0.8) +
  geom_label_repel(aes(label = sign ), fontface="bold", 
                   color="black", box.padding=unit(0.35, "lines"),
                   point.padding=unit(0.5, "lines"), segment.colour = "grey50") +
  theme_bw()

那么除了不画常规的火山图,还可以采用另一种方式进行绘制,在生信技能树推文中就提供了新的绘制方式。

横坐标 使用不同cluster细胞的的pct差值,纵坐标 使用log2FC ,P值 用颜色来表示。

针对自己的数据也进行了尝试

新的火山图绘制代码
# 单细胞火山图展示方式-new
# Findmarkers参数设置为0!
library(ggrepel)
markers <- markers %>%
  mutate(Difference = pct.1 - pct.2) %>% 
  rownames_to_column("gene")

#画图
ggplot(markers, aes(x=Difference, y=avg_log2FC, color = change)) + 
  geom_point(size=1.2) + 
  scale_color_manual('change',labels=c(paste0("down(",table(markers$change)[[1]],')'),
                                 'ns',
                                 paste0("up(",table(markers$change)[[3]],')' )),
                                 values=c("#0d1b46", "grey","tomato" ))+
  geom_label_repel(data=subset(markers, 
                               avg_log2FC >= 1 & Difference >= 0.2 & p_val_adj <= 0.05), 
                   aes(label=gene),  #添加label
                   color="black", #设置label中标签的颜色
                   segment.colour = "black",#设置label框的颜色
                   label.padding = 0.2, 
                   segment.size = 0.3,  #框的大小
                   size=4,
                   max.overlaps = 20) +  # 增加 max.overlaps 参数
  geom_label_repel(data=subset(markers, 
                               avg_log2FC <= -1 & Difference <= -0.1 & p_val_adj <= 0.05), 
                   aes(label=gene), 
                   label.padding = 0.2, 
                   color="black",
                   segment.colour = "black",
                   segment.size = 0.3, size=4,
                   max.overlaps = 20) + 
  geom_vline(xintercept = 0,linetype = 2) +
  geom_hline(yintercept = 0,linetype = 2) +
  labs(x="△ Percentage difference",y="Log-Fold change") + 
  theme_bw()
ggsave("volcanoplot_new.pdf",width = 9,height = 7)

致谢:感谢曾老师,小洁老师以及生信技能树团队全体成员。

:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(希望多多交流)。更多内容可关注公众号:生信方舟

- END -

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity3D截屏保存本地和上传方法

系列文章目录 unity工具 文章目录 系列文章目录&#x1f449;前言&#x1f449;一、模型截图保存&#x1f449;1-1 模型格式&#x1f449;1-2 设置图片大小&#x1f449;1-3 代码如下 &#x1f449;二、截图上传给后端保存&#x1f449;壁纸分享&#x1f449;总结 &#x1f44…

cad由于找不到mfc140u.dll的解决方法,彻底解决mfc140u.dll丢失问题

在计算机辅助设计&#xff08;CAD&#xff09;的时候&#xff0c;我们可能会遇到各种错误和问题。其中&#xff0c;“CAD由于找不到mfc140u.dll&#xff0c;无法继续执行代码”的错误提示。这个问题可能会导致CAD无法启动运行&#xff0c;因此&#xff0c;我希望通过分享我的经…

云计算【第一阶段(22)】进程和计划任务管理

一、查看进程 1.1、程序和进程的关系 程序 保存在硬盘&#xff0c;光盘等介质中的可执行代码和数据静态保存的代码 进程 在cpu及内存中运行的程序代码动态执行的代码父&#xff0c;子进程&#xff1a;每个程序可以创建一个或多个进程 1.2、查看进程 1.2.1、静态查看进程…

Geotools系列说明之入门介绍与坐标系转换说明

Geotools介绍 借用官网的介绍 GeoTools is an open source Java library that provides tools for geospatial data 就是提供java处理地理空间的工具详细内容请参考官网 Geotools环境搭建 我们这里只讨论Geotools在Maven中和Idea的项目实战&#xff0c;至于Geotools的服务端…

Altium Designer软件下载安装「PCB设计软件」安装包资源获取

Altium Designer作为一款集成化的电子产品开发系统&#xff0c;它主要适用于Windows操作系统&#xff0c;为电子设计工程师们提供了一个高效、便捷的工作平台。 在Altium Designer中&#xff0c;原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出…

DVWA 靶场 File Inclusion 通关解析

前言 DVWA代表Damn Vulnerable Web Application&#xff0c;是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序&#xff0c;旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…

KVB App:集运价格飙升:地缘风险下的投资新机遇

摘要 随着全球地缘政治局势的反复和海运需求的持续高企&#xff0c;集装箱运价在近期不断攀升&#xff0c;吸引了越来越多的投资者。摩根大通的最新报告指出&#xff0c;地缘风险加剧和航运市场需求旺盛使得即期运费可能继续走高。本文将深入分析当前集运市场的情况及其对投资者…

备份和还原

stai和dnta snat&#xff1a;源地址转换 内网---外网 内网ip转换成可以访问外网的ip 内网的多个主机可以使用一个有效的公网ip地址访问外部网络 DNAT&#xff1a;目的地址转发 外部用户&#xff0c;可以通过一个公网地址访问服务内部的私网服务。 私网的ip和公网ip做一个…

SQLite、MySQL、PostgreSQL 3个关系数据库之间优缺点对比

引言 关系数据模型以行和列的表格形式组织数据&#xff0c;在数据库管理工具中占主导地位。今天还有其他数据模型&#xff0c;包括NoSQL和NewSQL&#xff0c;但是关系数据库管理系统&#xff08;RDBMS&#xff09;仍然占主导地位用于存储和管理全球数据。 本文比较了三种实现最…

40岁学习java是否需要报班学习?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;应该不需要。各种公开免费的…

新能源行业必会基础知识-----电力市场概论笔记-----绪论

新能源行业知识体系-------主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/139946830 目录 1. 电力市场的定义2. 对传统电力系统理论的挑战 1. 电力市场的定义 1. 我国电力市场的进程 我国新一轮电力体制改革的5大亮点&…

摒弃反模式:使用Kotlin委托优化Android BaseActivity

摒弃反模式&#xff1a;使用Kotlin委托优化Android BaseActivity 在Android开发中&#xff0c;许多开发者习惯于创建名为“BaseActivity”或“BaseFragment”的基类&#xff0c;以便在所有Activity或Fragment中共享一些通用行为。这种方法乍一看似乎是个好主意&#xff0c;但实…

C语言实现KMP算法

#include<stdio.h> #include<string.h> #include<stdlib.h>void getNextArray(char * sub_str, int sub_str_length, int * next_array); int kmpSearch(char * sub_str, char * main_str);int main(void) {// 1 声明用于算法处理的字符串char origin_str[] …

整数智能与上海数据交易所携手,共筑数据要素市场新篇章

近期&#xff0c;整数智能荣获上海数据交易所“数据治理服务商”证书&#xff0c;正式加入上海数据交易所数商生态&#xff0c;成为上海数据交易所官方认证的数据治理服务商。 在数字经济的浪潮中&#xff0c;上海数据交易所一直扮演着引领者和推动者的角色。紧扣建设国家级…

CID引流电商:传统电商破局的新动力

摘要&#xff1a;CID引流电商为传统电商带来破局新机遇&#xff0c;通过跨平台引流、精准定位和高效转化&#xff0c;解决了流量获取难、成本高的问题&#xff0c;提升了销售业绩和市场竞争力。CID引流电商助力传统电商在激烈竞争中保持领先&#xff0c;推动行业持续发展。 随…

气象相关图表制作-字体图标、图片、折线的堆叠

开发工作中有个需要展示气温&#xff08;折线&#xff09;、天气&#xff08;图片&#xff09;、风羽&#xff08;字体图标&#xff09;的图表展示需求&#xff0c;之前用过highcharts的关于类似的chart&#xff0c;里面的风雨用的是自带的图片&#xff0c;但是现在要求风羽需要…

2024年Apache DolphinScheduler 社区开源之夏活动中选公示

各位社区伙伴们&#xff0c;经过严格的评审和筛选&#xff0c;我们非常高兴地向大家公布Apache DolphinScheduler 社区在本年度的开源之夏活动中&#xff0c;中选的学生和导师名单&#xff01; 序号项目名称中选学生导师1增加Raft注册插件胡世豪朱学通2k8s任务功能扩展戴明辰伏…

【原创工具】孔夫子旧书网店铺图书采集工具1.0

目录 1 概述2 演示效果2.1 图文2.2视频3 核心逻辑3.1 导出数据4 附件下载5 使用方式1 概述 爬取孔夫子旧书网的店铺图书信息(条码、书名、售价、定价),支持导出和调速(默认速度5条/s)、支持识别该店铺最新上架图书和总计图书数量,采集结果和官网排序一致,可以对比测试 2…

启动台出现agent app的解决方法~

启动台出现agent app的解决方法&#xff5e; 如果用了战网&#xff0c;Battle.net&#xff0c;在卸载后有一个agent app&#xff0c;启动台删除不掉&#xff0c;应用程序里面没有&#xff0c;怎么办呢&#xff1f; 解决方法&#xff1a;找到这个app所在位置&#xff0c;可以通…

STM32将外部SDRAM空间作为系统堆(Heap)空间

概述 stm32可以外扩很大的sram&#xff0c;常见外部sram的初始化函数一般是c语言写的&#xff0c;默认写在main函数里面。stm32初始化首先进入汇编代码startup_stm32f429xx.s&#xff0c;在汇编代码中Reset_Handler&#xff08;复位中断服务程序&#xff09;里面先调用了Syste…