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

Cell 文章图复现

多组差异火山图复现

参考文章: A Spatiotemporal Organ-Wide Gene Expression and Cell Atlas of the Developing Human Heart Figure 2. H
Figure 2. H
图里主要是单细胞数据不同cluster之间的差异火山图, 所以说白了就是散点图和柱状图的结合, 散点图用差异基因绘制, 柱状图利用logFC最大最小值绘制就完了.

加载包

> library(tidyverse)
> library(ggplot2)
> library(ggpubr)
> library(RColorBrewer)
> library(openxlsx)
> library(ggsci)
> library(ggrepel)
> # Create color parameters
> qual_col_pals = brewer.pal.info[brewer.pal.info$category == 'qual',]
> col_vector = unlist(mapply(brewer.pal, qual_col_pals$maxcolors, rownames(qual_col_pals)))
> 

读取数据

> deg <- read.csv("./Differentially_Expressed_Markers_Each_Cluster.csv", header = T)
> deg$cluster <- as.factor(deg$cluster)
> head(deg)X p_val avg_log2FC pct.1 pct.2 p_val_adj cluster       gene
1 1     0   2.558924 0.982 0.289         0       0      DEFB1
2 2     0   2.365316 0.963 0.220         0       0     HMGCS2
3 3     0   2.317304 0.991 0.513         0       0     ATP1B1
4 4     0   2.207154 0.963 0.231         0       0 AC015522.1
5 5     0   2.153153 0.912 0.244         0       0    HSD11B2
6 6     0   2.125726 0.811 0.209         0       0     PAPPA2
> deg <- deg %>% dplyr::filter(p_val_adj < 0.05) %>% 
+   dplyr::filter(abs(avg_log2FC) > 0.75) %>% 
+   dplyr::select(avg_log2FC, p_val_adj, cluster, gene)  # filter and tidy the matrix
> 

添加一些注释信息, 例如legend, 上下调, 需要显示名称的基因等

> deg <- deg %>% 
+   mutate(label = ifelse(p_val_adj < 0.01, "adjusted P-val < 0.01", "adjusted P-val >= 0.01")) %>% 
+   mutate(Change = ifelse(avg_log2FC > 0.75, "UP", "DOWN"))
> 
> bardata <- deg %>% dplyr::select(cluster, avg_log2FC ) %>% 
+   group_by(cluster) %>% 
+   summarise_all(list(tail = min, top = max)) # 
> head(bardata)
# A tibble: 6 × 3cluster  tail   top<fct>   <dbl> <dbl>
1 0       -5.61  2.56
2 1       -5.13  4.32
3 2       -5.46  2.53
4 3       -4.84  4.81
5 4       -5.60  3.97
6 5       -4.59  2.96
>
> tagedgene <- deg %>% group_by(cluster) %>% 
+   slice_max(abs(avg_log2FC), n = 3)
> head(tagedgene)
# A tibble: 6 × 6
# Groups:   cluster [2]avg_log2FC p_val_adj cluster gene   label                 Change<dbl>     <dbl> <fct>   <chr>  <chr>                 <chr> 
1      -5.61  0        0       ALDOB  adjusted P-val < 0.01 DOWN  
2      -5.46  0        0       HSPA1A adjusted P-val < 0.01 DOWN  
3      -5.09  0        0       GPX3   adjusted P-val < 0.01 DOWN  
4      -5.13  0        1       DEFB1  adjusted P-val < 0.01 DOWN  
5      -4.61  0        1       CRYAB  adjusted P-val < 0.01 DOWN  
6      -4.36  1.07e-43 1       ALDOB  adjusted P-val < 0.01 DOWN  
> 

绘制图形

  • 利用bardata绘制背景柱状图
ggplot(deg, aes(x = cluster, y = avg_log2FC ))+geom_col(data = bardata, mapping = aes(x = cluster, y = tail),fill = "grey", width = 0.8) +geom_col(data = bardata, mapping = aes(x = cluster, y = top),fill = "grey", width = 0.8)

在这里插入图片描述

  • 添加上散点图, 黑色点有点少了, 不过无所谓能看到就行
ggplot(deg, aes(x = cluster, y = avg_log2FC ))+geom_col(data = bardata, mapping = aes(x = cluster, y = tail),fill = "grey", width = 0.8) +geom_col(data = bardata, mapping = aes(x = cluster, y = top),fill = "grey", width = 0.8) +geom_jitter(aes(color = label), size = 1,position = position_jitter(seed = 0328)) +scale_color_manual(values = c("#db5a6b", "black"))

在这里插入图片描述

  • 添加注释方块
ggplot(deg, aes(x = cluster, y = avg_log2FC ))+geom_col(data = bardata, mapping = aes(x = cluster, y = tail),fill = "grey", width = 0.8) +geom_col(data = bardata, mapping = aes(x = cluster, y = top),fill = "grey", width = 0.8) +geom_jitter(aes(color = label), size = 1,position = position_jitter(seed = 0328)) +scale_color_manual(values = c("#db5a6b", "black")) +geom_tile(aes(y = 0, fill = cluster), show.legend = F, color = "black", width = 1) +scale_fill_manual(values = col_vector)

在这里插入图片描述

  • 给想要展示的基因和注释方块添加文字
    • 看着有点挤, 点击zoom放大就好了
ggplot(deg, aes(x = cluster, y = avg_log2FC ))+geom_col(data = bardata, mapping = aes(x = cluster, y = tail),fill = "grey", width = 0.8) +geom_col(data = bardata, mapping = aes(x = cluster, y = top),fill = "grey", width = 0.8) +geom_jitter(aes(color = label), size = 1,position = position_jitter(seed = 0328)) +scale_color_manual(values = c("#db5a6b", "black")) +geom_tile(aes(y = 0, fill = cluster), show.legend = F, color = "black", width = 1) +scale_fill_manual(values = col_vector) +geom_text(aes(y = 0, label = cluster)) +geom_text_repel(data = deg %>% filter(gene %in% unique(tagedgene$gene)),aes(label = gene), position = position_jitter(seed = 0328),arrow = arrow(angle = 30, length = unit(0.05, "inches"),ends = "last", type = "open"))

在这里插入图片描述

  • 最后处理一下背景啥的
ggplot(deg, aes(x = cluster, y = avg_log2FC ))+geom_col(data = bardata, mapping = aes(x = cluster, y = tail),fill = "grey", width = 0.8) +geom_col(data = bardata, mapping = aes(x = cluster, y = top),fill = "grey", width = 0.8) +geom_jitter(aes(color = label), size = 1,position = position_jitter(seed = 0328)) +scale_color_manual(values = c("#db5a6b", "black")) +geom_tile(aes(y = 0, fill = cluster), show.legend = F, color = "black", width = 1) +scale_fill_manual(values = col_vector) +geom_text(aes(y = 0, label = cluster)) +geom_text_repel(data = deg %>% filter(gene %in% unique(tagedgene$gene)),aes(label = gene), position = position_jitter(seed = 0328),arrow = arrow(angle = 30, length = unit(0.05, "inches"),ends = "last", type = "open")) +theme_minimal() +theme(axis.line.y = element_line(color = "black", linewidth = 1),axis.line.x = element_blank(),axis.text.x = element_blank(),panel.grid = element_blank(),legend.title = element_blank())

在这里插入图片描述
是不是很简单啊 😃
其实不只是单细胞, RNAseq等技术的差异基因也可以组合成类似的矩阵之后绘制相同的多组差异火山图. 理解这个图是柱状图和散点图的结合就可以灵活的绘制类似的图啦 😃

相关文章:

Cell 文章图复现

多组差异火山图复现 参考文章: A Spatiotemporal Organ-Wide Gene Expression and Cell Atlas of the Developing Human Heart Figure 2. H 图里主要是单细胞数据不同cluster之间的差异火山图, 所以说白了就是散点图和柱状图的结合, 散点图用差异基因绘制, 柱状图利用logFC最…...

只需一招彻底解决SOLIDWORKS不显示缩略图预览

SOLIDWORKS缩略图能够让工程师便于识别想要打开的模型&#xff0c;但经常会有用户遇到在资源管理器中查看SOLIDWORKS文件时&#xff0c;仅显示SOLIDWORKS的图标&#xff0c;而没有相关文件的预览缩略图。 Windows文件夹选项设置 首先确保Windows文件夹选项设置&#xff0c;显…...

nccl 源码分析 从 ncclAllReduce 的执行开始认识nccl源代码

文字没有提及的代码内容&#xff0c;不需要太在意&#xff0c;当然也可以瞟两眼&#xff1b; 首先&#xff0c;总体而言函数 ncclAllReduce 的功能在于将携带了一个操作的info结构体&#xff0c;放入了队列中&#xff0c;待后面执行&#xff1b; 排队的函数调用是 ncclEnqueue…...

仿照AirDrop(隔空投送)优雅地在局域网中传输文件

基于WebRTC的局域网文件传输 在前一段时间&#xff0c;我想在手机上向电脑发送文件&#xff0c;因为要发送的文件比较多&#xff0c;所以我想直接通过USB连到电脑上传输&#xff0c;等我将手机连到电脑上之后&#xff0c;我发现手机竟然无法被电脑识别&#xff0c;能够充电但是…...

【PHP】TP5.0及Fastadmin中将查询数据返回对象转为数组

目录 方法一&#xff1a;使用collection助手函数 方法二&#xff1a;设置返回数据集的对象名 在 ThinkPHP 5.0 中&#xff0c;对模型查询返回的对象进行了优化&#xff0c;默认情况下&#xff0c;使用 all 或 select 方法查询数据库将返回一个对象数组集合。这个集合是模型的…...

大公司里怎样开发和部署前端代码?

前端训练营&#xff1a;1v1私教&#xff0c;终身辅导计划&#xff0c;帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello&#xff0c;大家好&#xff0c;我是 Sunday。 昨天的时候有同学问到前端部署相关的内容&#xff0c;正好在知乎中看到…...

API接口:原理、设计与实践

一、引言 随着互联网的发展&#xff0c;应用程序之间的交互变得越来越频繁&#xff0c;API接口成为了不同应用程序之间进行数据交换的重要手段。本文将详细介绍API接口的原理、设计与实践&#xff0c;以期帮助读者更好地理解和应用这一技术。 二、API接口概述 API&#xff0…...

2023年TIOBE指数TOP50的编程语言写“Hello World!”

这篇文章列出了TIOBE指数TOP50的编程语言&#xff08;TIOBE Index - TIOBE&#xff09;如何写“Hello World&#xff01;”。“Hello World&#xff01;”代码应该是每个程序员学习一门编程语言最先实现的程序&#xff0c;给我们带来了很多美好的回忆&#xff0c;下面我们就一次…...

spring、springmvc、springboot、springcloud简介

spring简介 spring是什么&#xff1f; spring: 春天spring: 轻量级的控制反转和面向切面编程的框架 历史 2002年&#xff0c;首次推出spring雏形&#xff0c;interface 21框架2004年&#xff0c;发布1.0版本Rod Johnson: 创始人&#xff0c;悉尼大学&#xff0c;音乐学博士…...

立仪科技光谱共焦位移传感器:应用领域的广泛性

在科技日新月异的今天&#xff0c;光谱共焦位移传感器以其精确、稳定的特性&#xff0c;在各个领域得到了广泛的应用。本文将详细介绍光谱共焦位移传感器的应用情况&#xff0c;以期让大家对其有更深入的了解。我们来理解一下什么是光谱共焦位移传感器。 它是一种通过测量物体表…...

neo4j图数据库安装和测试

neo4j图数据库安装和测试 1. 下载合适的neo4j软件版本。 https://we-yun.com/doc/neo4j/ https://neo4j.com/deployment-center/#enterprise 2. 下载JAVAJDK 由于neo4j是一个用Java编写的图形数据库&#xff0c;因此在安装和运行Neo4j之前&#xff0c;需要先安装Java Developm…...

爬取豆瓣电影top250的电影名称(完整代码与解释)

在爬取豆瓣电影top250的电影名称之前&#xff0c;需要在安装两个第三方库requests和bs4&#xff0c;方法是在终端输入&#xff1a; pip install requestspip install bs4 截几张关键性图片&#xff1a; 豆瓣top250电影网页 运行结果 测试html文件标签的各个方法的作用&#xf…...

tidb 集成 flyway 报错 denied to user for table global_variables

报错内容: Caused by: java.sql.SQLException: connection disabled at com.alibaba.druid.pool.DruidPooledConnection.checkStateInternal(DruidPooledConnection.java:1181) at com.alibaba.druid.pool.DruidPooledConnection.checkState(DruidPooledConnection.jav…...

很实用的ChatGPT网站—在线编程模块增补篇

很实用的ChatGPT网站&#xff08;http://chat-zh.com/&#xff09;——增补篇 今天介绍一个好兄弟开发的ChatGPT网站&#xff0c;网址[http://chat-zh.com/]。这个网站功能模块很多&#xff0c;包含生活、学习、医疗、法律、经济等很多方面。今天跟大家分享一下&#xff0c;新…...

A股风格因子看板 (2024.01第01期)

该因子看板跟踪A股风格因子&#xff0c;该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子&#xff0c;用以分析市场风格切换、组合风格暴 露等。 今日为该因子跟踪第1期&#xff0c;指数组合数据截止日2024-12-01&#xff0c;要点如下 近1年A股风格因子检验统…...

基于gamma矫正的照片亮度调整(python和opencv实现)

import cv2 import numpy as npdef adjust_gamma(image, gamma1.0):invGamma 1.0 / gammatable np.array([((i / 255.0) ** invGamma) * 255 for i in np.arange(0, 256)]).astype("uint8")return cv2.LUT(image, table)# 读取图像 original cv2.imread("tes…...

LeetCode-Java(29)

29. 两数相除 结果肯定落在dividend上&#xff0c;于是对这个区间每一个数进行二分查找&#xff0c;判断方法就是 while (l < r) {long mid l r 1 >> 1;if (mul(mid, y) < x) {l mid;} else {r mid - 1;}} 其中mul是一个要定义的快速乘法。 完整代码如下 …...

腾讯云导入导出镜像官方文档

制作与导出 Linux 镜像 https://cloud.tencent.com/document/product/213/17814 制作与导出 Windows 镜像 ​​​​​​https://cloud.tencent.com/document/product/213/17815 云服务器 导出镜像-操作指南-文档中心-腾讯云 (tencent.com) 轻量应用服务器 管理共享镜像-操作指…...

keras 深度学习框架实现 手写数字识别

阅读本文之前&#xff0c;请先参考--------win10搭建keras深度学习框架 安装运行环境 阅读本文之前&#xff0c;请先参考--------keras人工智能框架 MNIST 数据集 随机展示 查看训练图片 完整代码如下图&#xff1a; 在sublimeText中 使用ctrlB运行代码&#xff0c;结果如…...

SELinux策略语法以及示例策略

首发公号&#xff1a;Rand_cs 本文来讲述 SELinux 策略常用的语法&#xff0c;然后解读一下 SELinux 这个项目中给出的示例策略 安全上下文 首先来看一下安全上下文的格式&#xff1a; user : role : type : level每一个主体和客体都有一个安全上下文&#xff0c;通常也称安…...

终极EVE舰船配置工具:5步掌握Pyfa离线战术规划

终极EVE舰船配置工具&#xff1a;5步掌握Pyfa离线战术规划 【免费下载链接】Pyfa Python fitting assistant, cross-platform fitting tool for EVE Online 项目地址: https://gitcode.com/gh_mirrors/py/Pyfa 在EVE Online的宇宙中&#xff0c;每一次舰船配置都可能决定…...

从注入到调用:一个完整的Unity il2cpp运行时Hook实战指南(附C++代码)

从注入到调用&#xff1a;一个完整的Unity il2cpp运行时Hook实战指南&#xff08;附C代码&#xff09; 在游戏开发与逆向工程领域&#xff0c;Unity引擎的il2cpp后端因其性能优势被广泛采用&#xff0c;但也带来了动态分析的独特挑战。本文将深入探讨如何通过运行时注入技术&am…...

为什么83%的MCP 2026早期部署集群在负载突增时触发非预期驱逐?3步诊断清单+自动修复脚本交付

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;MCP 2026边缘节点资源管理 MCP 2026&#xff08;Multi-Cloud Platform 2026&#xff09;定义了一套轻量、可插拔的边缘节点资源协同规范&#xff0c;聚焦于异构硬件抽象、实时资源感知与策略驱动的动态…...

桌面后端开发本地服务与系统集成

桌面后端开发本地服务与系统集成&#xff1a;构建高效本地化解决方案 在数字化时代&#xff0c;桌面后端开发作为连接用户界面与底层系统的桥梁&#xff0c;其重要性日益凸显。本地服务与系统集成不仅能够提升应用性能&#xff0c;还能实现数据的高效处理与跨平台协作。无论是…...

League-Toolkit:英雄联盟玩家的智能助手完全指南 [特殊字符]

League-Toolkit&#xff1a;英雄联盟玩家的智能助手完全指南 &#x1f3ae; 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit是一…...

3大核心功能揭秘:Escrcpy如何实现安卓设备高效大屏控制?

3大核心功能揭秘&#xff1a;Escrcpy如何实现安卓设备高效大屏控制&#xff1f; 【免费下载链接】escrcpy &#x1f4f1; Display and control your Android device graphically with scrcpy. 项目地址: https://gitcode.com/GitHub_Trending/es/escrcpy 你是否曾想过在…...

ComfyUI-Florence2终极指南:15种视觉任务的完整解决方案

ComfyUI-Florence2终极指南&#xff1a;15种视觉任务的完整解决方案 【免费下载链接】ComfyUI-Florence2 Inference Microsoft Florence2 VLM 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Florence2 ComfyUI-Florence2 是一款基于Microsoft Florence2视觉语言…...

区块链DeFi实战

区块链DeFi实战&#xff1a;探索去中心化金融新机遇 近年来&#xff0c;区块链技术的快速发展催生了去中心化金融&#xff08;DeFi&#xff09;的崛起。DeFi通过智能合约和去中心化协议重构传统金融体系&#xff0c;为用户提供无需中介的借贷、交易和理财服务。本文将深入探讨…...

零基础复现Claude Code(四):双手篇——赋予读写文件的能力

零基础复现Claude Code&#xff08;四&#xff09;&#xff1a;双手篇——赋予读写文件的能力 开篇&#xff1a;从"纸上谈兵"到"真刀真枪" 上一篇&#xff0c;我们实现了ReAct循环的骨架——Agent已经会"想"了。它能输出&#xff1a; Thought: 我…...

MusicPlayer2:你的Windows音乐管家,三步打造专属音乐空间

MusicPlayer2&#xff1a;你的Windows音乐管家&#xff0c;三步打造专属音乐空间 【免费下载链接】MusicPlayer2 MusicPlayer2是一款功能强大的本地音乐播放软件&#xff0c;旨在为用户提供最佳的本地音乐播放体验。它支持歌词显示、歌词卡拉OK样式显示、歌词在线下载、歌词编辑…...