优雅地展示20w单细胞热图|非Doheatmap 超大数据集 细胞数太多

news2024/11/13 15:19:02

单细胞超大数据集的热图怎么画?昨天刚做完展示20万单细胞的热图要这么画吗? 今天就有人发消息问我为啥他画出来的热图有问题。

问题起源

昨天分享完  20万单细胞的热图要这么画吗?,就有人问为啥他的数据会出错。我们先来看下他的数据

  • 数据输入部分

cluster_gene_stat=FindAllMarkers(d.all,only.pos = TRUE,logfc.threshold = 0.4)head(cluster_gene_stat)table(cluster_gene_stat$cluster)DimPlot(d.all)d.all$orig.ident=Idents(d.all)table(d.all$orig.ident)Idents(d.all)=paste0('cluster',d.all$orig.ident)a=AverageExpression(d.all,return.seurat = TRUE)a$orig.ident=rownames(a@meta.data)head(a@meta.data)head(markers)markers=cluster_gene_statDoHeatmap(a,draw.lines = FALSE, slot = 'scale.data',assay = 'SCT',          features = markers %>%group_by(cluster) %>%dplyr::slice_max(avg_log2FC,n = 5) %>% .$gene )
  • 画图所需数据

他画出来的图是这样:

markers$cluster=paste0("cluster",markers$cluster)markers$cluster=factor(markers$cluster,levels = unique(markers$cluster))DoHeatmap(a,draw.lines = FALSE, slot = 'scale.data',assay = 'SCT',          features = markers %>%group_by(cluster) %>%dplyr::slice_max(avg_log2FC,n = 5) %>% .$gene )

  • 和我的图20万单细胞的热图要这么画吗? 区别在于没有列名,图注也不完整,且热图色块是乱序的


解决方法

  • 1. 方倒是简单,重新添加列名即可添加即可

Idents(d.all)=paste0('cluster',d.all$orig.ident)a=AverageExpression(d.all,return.seurat = TRUE)a$orig.ident=rownames(a@meta.data)DoHeatmap(a,draw.lines = FALSE, slot = 'scale.data',      assay = 'SCT',group.by = 'orig.ident',          features = markers %>%group_by(cluster) %>%dplyr::slice_max(avg_log2FC,n = 5) %>% .$gene )

  • 2. 调整因子顺序,让热图中的色块更好看些

markers$cluster=factor(markers$cluster,levels = paste0('cluster',seq(0,8,1)) )head(markers)head(a@meta.data)DoHeatmap(a,draw.lines = FALSE, slot = 'scale.data',assay = 'SCT',group.by = 'orig.ident',          features = markers %>%group_by(cluster) %>%dplyr::slice_max(avg_log2FC,n = 5) %>% .$gene )

但是你会发现 右边地图注少了cluster8。

为什么cluster8会缺失?我觉得这是bug,盲猜可能由于markers内的cluster8对应地基因在a里是na


  • 3. 自己手动添加图注cluster8即可

DoHeatmap(a,features =  markers %>%group_by(cluster) %>%dplyr::slice_max(avg_log2FC,n = 5) %>% .$gene,          draw.lines = FALSE,group.by = 'orig.ident') +  ggplot2:: scale_color_discrete(name = "Identity", labels =  paste0('cluster',seq(0,8,1))  )

  • 3. 如果热图中想多加几个基因的话 

DoHeatmap(a,features =  markers %>%group_by(cluster) %>%dplyr::slice_max(avg_log2FC,n = 15) %>% .$gene,          draw.lines = FALSE,group.by = 'orig.ident') +  ggplot2:: scale_color_discrete(name = "Identity", labels =  paste0('cluster',seq(0,8,1))  )

只能这样了,这里所有热图都挺丑的,瘸子里面选巧匠吧


画外音:

这种热图不好看的根本原因在于数据的问题。提示我们需要合并、删除某些cluster,然后再来画热图会更好看。

如果你不会合并、删除某些cluster。可以先看看我之前的直播:

直播四-单细胞个性化注释、细分亚群并把细分亚群放回总群

如果还是不懂,找机会再直播一次~


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

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

相关文章

【Vue2+3入门到实战】(21)认识Vue3、使用create-vue搭建Vue3项目、熟悉项目和关键文件

目录 一、认识Vue31. Vue2 选项式 API vs Vue3 组合式API2. Vue3的优势 二、 使用create-vue搭建Vue3项目1. 认识create-vue2. 使用create-vue创建项目 三、 熟悉项目和关键文件四、总结 一、认识Vue3 1. Vue2 选项式 API vs Vue3 组合式API <script> export default {…

Django Web 开发实战-实现用户管理系统(部门管理、用户管理、注册登录、文件上传)

简介 基于Django Python Web框架 MySQL Bootstrap 开发的用户管理系统。支持增删改查、模糊搜索、分页。 功能介绍 部门管理---》已完成 用户管理---》已完成 认证&#xff08;注册/登录&#xff09;---》开发中 数据统计---》待开发 文件上传---》待开发 效果图 部门…

《绝地求生》改名卡快速获得方法 绝地求生改名卡怎么获得

《绝地求生》改名卡是很多小伙伴所在意的物品&#xff0c;购买通行证后需要提升一定的等级才能入手&#xff0c;而怎么升级最快最划算呢&#xff1f;今天闲游盒带来“米奇”分享的《绝地求生》改名卡快速获得方法&#xff0c;赶紧来试试吧。 吃鸡刚刚迎来了更新&#xff0c;通行…

CSDN规则详解(三)

文章目录 每日一句正能量前言企业博客如何开通企业博客分类专栏付费专栏开通规则博客搬家后记 每日一句正能量 只有经历过风雨的人生&#xff0c;才能看到彩虹的美丽&#xff1b;只有付出努力的人&#xff0c;才能品味到成功的滋味&#xff1b;只有懂得感恩的人&#xff0c;才能…

QProgressDialog用法及结合QThread用法,四种线程使用

1 QProgressDialog概述 QProgressDialog类提供耗时操作的进度条。 进度对话框用于向用户指示操作将花费多长时间&#xff0c;并演示应用程序没有冻结。此外&#xff0c;QPorgressDialog还可以给用户一个中止操作的机会。 进度对话框的一个常见问题是很难知道何时使用它们;操作…

HTTP 错误 401.3 - Unauthorized 由于Web服务器上此资源的访问控制列表(ACL)配置或加密设置。

用IIS 发布网站&#xff0c;不能访问且出现错误&#xff1a; HTTP 错误 401.3 - Unauthorized 由于Web服务器上此资源的访问控制列表(ACL)配置或加密设置。您无权查看此目录或页面 解决办法&#xff1a; 1.打开IIS界面&#xff0c;选中发布的网站&#xff0c;右键—>编辑…

【C语言】Linux socket 编程

一、Socket 通信过程 在 Linux 系统中&#xff0c;socket 是一种特殊的文件描述符&#xff0c;用于在网络中的不同主机间或者同一台主机中的不同进程间进行双向通信。它是通信链路的端点&#xff0c;可以看作是网络通信的接口。Socket 通信过程主要分为以下几个步骤&#xff1a…

canvas绘制直角梯形(向右)

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

PTA QQ帐户的申请与登陆

QQ帐户的申请与登陆 分数 25 全屏浏览题目 作者 DS课程组 单位 浙江大学 实现QQ新帐户申请和老帐户登陆的简化版功能。最大挑战是&#xff1a;据说现在的QQ号码已经有10位数了。 输入格式: 输入首先给出一个正整数N&#xff08;≤105&#xff09;&#xff0c;随后给出N行…

微服务-Gateway

案例搭建 官网地址 父Pom <com.alibaba.cloud.version>2.2.8.RELEASE</com.alibaba.cloud.version> <com.cloud.version>Hoxton.SR12</com.cloud.version> <com.dubbo.version>2.2.7.RELEASE</com.dubbo.version> <dependencyManagem…

Python基础-05(输出输入、if、if else和elif)

文章目录 前言一、输出&#xff08;print()&#xff09;和输入&#xff08;input()&#xff09;二、if、if else、elif1.if2.if else3.关于输入input的默认值4.elif 前言 今天复习一些非常基础的内容&#xff0c;以及if、if else和elif语句 一、输出&#xff08;print()&…

【vue/uniapp】pdf.js 在一些型号的手机上不显示

引入&#xff1a; uniapp 项目通过 pdf.js 来在线浏览 pdf 链接&#xff0c;在微信小程序中都显示正常&#xff0c;但是通过 app 跳转小程序&#xff0c;在苹果、小米显示正常&#xff0c;但是华为和 oppo 就不显示&#xff0c;可以通过降 pdf.js 的版本来解决这个问题。 解决&…

1.3 力扣二叉树中等题

题目一&#xff1a; 669. 修剪二叉搜索树 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff0c;如果没有被移除&…

python flask图书管理系统带文档

python flask图书管理系统带文档。功能&#xff1a;登录&#xff0c;图书的增删改查&#xff0c;读者管理&#xff0c;借阅记录&#xff0c;有文档。 技术&#xff1a;python3,flask,mysql,html。 包含源码数据库文件文档。 源码下载地址&#xff1a; https://download.csd…

Calibre PEX Hspice Netlist提取步骤(数模芯片提取spice netlist流程)

在数模混合芯片中&#xff0c;通常模拟需要数字模块通过calibre工具来提取Hspice netlist用于功耗仿真。注意这里的spice netlist和做Calibre的spice netlist是不太一样的。 另外在做calibre pex时需要确保当前的design LVS已经pass。否则功耗仿真可能会不准。 Calibre LVS常…

Z-score 因子的深入思考

最新&#xff08;2024 年 1 月&#xff09;出版的 SC 技术分析&#xff08;Techical Analysis of Stock & Commodities&#xff09;的第 4 条文章给到了 Z-score&#xff0c;原文标题为《Z-score: How to use it in Trading》。今天的笔记&#xff0c;就借此机会&#xff0…

在日常工作中如何保障服务器的安全?

服务器在日常工作中具有重要的作用。它是网络的核心组成部分&#xff0c;承担着提供信息和服务的任务。 1.服务器为各种应用提供数据存储和处理服务&#xff0c;支持电子邮件、网页浏览、文件下载等服务&#xff0c;为用户提供高效、安全、可靠的网络访问。 2.服务器承载着各…

uni-app中实现元素拖动

uni-app中实现元素拖动 1、代码示例 <template><movable-area class"music-layout"><movable-view class"img-layout" :x"x" :y"y" direction"all"><img :src"musicDetail.bgUrl" :class&…

Linux mcd命令教程:如何在MS-DOS文件系统中切换工作目录(附实例教程和注意事项)

Linux mcd命令介绍 mcd是mtools工具的指令&#xff0c;它用于在MS-DOS文件系统中切换工作目录。如果不加任何参数&#xff0c;它将显示当前所在的磁盘和工作目录。 Linux mcd命令适用的Linux版本 mcd命令在所有主流的Linux发行版中都可以使用&#xff0c;包括但不限于Ubuntu…

Canvas保姆级教程----深入解析HTML5 Canvas工作原理和常用方法

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…