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

热图 -- pheatmap or ggplot2

文章目录

  • brief
    • 数据准备
  • pheatmap实例
    • 最朴素的方式
    • 数据缩放
    • 取消聚类
    • 更改每个小方格的大小
    • 聚类以及聚类方式和参数
    • 修改热图呈现的颜色
    • 修改legend
  • ggplot2实例
  • ggplot2实例变式
    • 添加 group bar
    • 做成dotplot
  • pheatmap 多图组合问题

brief

这里主要记录了pheatmap 以及 ggplot2实现热图的步骤:
在这里插入图片描述

数据准备

df_ <- df2[1:50,2:13]
df_ <- apply(df_,MARGIN = 2,FUN = as.numeric)
df_pheatmap::pheatmap(df_)

在这里插入图片描述

pheatmap实例

最朴素的方式

pheatmap::pheatmap(df_)

数据缩放

pheatmap::pheatmap(df_,scale = "column") # scale = "column" / "raw" / "none" 按照行/列进行数据的缩放

取消聚类

pheatmap::pheatmap(df_,cluster_rows = F,cluster_cols = F)

更改每个小方格的大小

pheatmap::pheatmap(df_,cluster_rows = F,cluster_cols = F,cellwidth = 20,cellheight = 20)

聚类以及聚类方式和参数

pheatmap::pheatmap(df_,cluster_rows = T,clustering_distance_rows = "correlation",cluster_cols = T,clustering_distance_cols = "manhattan",clustering_method = "median")
# clustering method has to one form the list: 'ward', 'ward.D', 'ward.D2', 'single','complete', 'average', 'mcquitty', 'median' or 'centroid'.
# 也就是层次聚类中计算距离的方法

修改热图呈现的颜色

pheatmap::pheatmap(df_,color = c('#6699CC','#FFFF99','#CC3333'))

修改legend

pheatmap::pheatmap(df_,legend = T,legend_breaks = c(-3,0,3))  # 自己指定legend在什么位置标数字
pheatmap::pheatmap(df_,legend = T,legend_labels = c("h","m","l")) # 自己指定legend标记的字符
# 当然了还有很多参数,用的时候再看吧
pheatmap::pheatmap(df_,show_colnames = T,show_rownames = T)

ggplot2实例

哪ggplot2可以实现热图嘛?

# 先把长格式数据转变为宽格式数据
df_ <- reshape2::melt(df_)
df_

在这里插入图片描述

p1<-ggplot(df_,aes(x=Var2,y=Var1,fill=value))+xlab("")+ylab("")
p1p2 <- p1+geom_raster()+scale_fill_gradient2(low="#003366", high="#990033", mid="white")+theme_minimal()
p2# geom_raster() geom_rect() and geom_tile() do the same thing ,都是画小方块的,参数不同
# Scales control the details of how data values are translated to visual properties
# scale_*_gradient creates a two colour gradient (low-high), 
# scale_*_gradient2 creates a diverging colour gradient (low-mid-high),
#  scale_*_gradientn creates a n-colour gradient

在这里插入图片描述

ggplot2实例变式

添加 group bar

df_ <- df2[1:50,2:13]
df_ <- as.data.frame(apply(df_,MARGIN = 2,FUN = as.numeric))
df_group <- colnames(df_) %>% as.data.frame() %>% mutate(group=c(rep("ST",3),rep("TZ",3),rep("TL",3),rep("TS",3))) %>%mutate(p="group") %>%ggplot(aes(.,y=p,fill=group))+geom_tile() + scale_y_discrete(position="right") +theme_minimal()+xlab(NULL) + ylab(NULL) +theme(axis.text.x = element_blank())+labs(fill = "Group")#画热图并将以上信息添加进去:
# 先把长格式数据转变为宽格式数据
df_ <- df2[1:50,2:13]
df_ <- apply(df_,MARGIN = 2,FUN = as.numeric)
df_ <- reshape2::melt(df_)
df_p1<-ggplot(df_,aes(x=Var2,y=Var1,fill=value)) #热图绘制
p2 <- p1+geom_raster()+scale_fill_gradient2(low="#003366", high="#990033", mid="white")+geom_tile()+theme_minimal()+theme(axis.text.x =element_text(angle =90,hjust =0.5,vjust = 0.5))+xlab(NULL) + ylab(NULL)
p2 %>%aplot::insert_top(group, height = .05)

在这里插入图片描述

做成dotplot

p1<-ggplot(df_,aes(x=Var1,y=Var2,fill=value))+xlab("")+ylab("")p3 <- p1+scale_color_gradientn(values = seq(0,1,0.2),colours = c('#6699CC','#FFFF99','#CC3333'))+theme_bw()+geom_point(aes(size=value,color=value))+guides(fill="none",color="none",size="none")+theme(panel.grid = element_blank(),axis.text.x =element_text(angle =45,hjust =1))
p3

在这里插入图片描述

pheatmap 多图组合问题

这部分内容来自:https://www.jianshu.com/p/8fc823c39488

在进行多图绘制的时候,用cowplot::plot_grid函数进行多图组合,结果在多图组合的时候,别的ggplot画图的对象没有任何问题,但是pheatmap的出现问题,并抛出如下警告信息:

p4<-cowplot::plot_grid(p1, p2, p3, ncol=1, labels=LETTERS[1:3])
Warning message:
In as_grob.default(plot) :Cannot convert object of class pheatmap into a grob.

cowplot::plot_grid多图组合的话,必须得是ggplot对象,而pheatmap不是ggplot对象,因此才会出现此问题。解决办法如下:

library(pheatmap)
test <- matrix(rnorm(200), 20, 10)
mfs <- mfs_ma <- mfs_fe <- pheatmap(test)
cowplot::plot_grid(mfs$gtable, mfs_ma$gtable, mfs_fe$gtable,ncol= 3, labels=LETTERS[1:3])

相关文章:

热图 -- pheatmap or ggplot2

文章目录 brief数据准备 pheatmap实例最朴素的方式数据缩放取消聚类更改每个小方格的大小聚类以及聚类方式和参数修改热图呈现的颜色修改legend ggplot2实例ggplot2实例变式添加 group bar做成dotplot pheatmap 多图组合问题 brief 这里主要记录了pheatmap 以及 ggplot2实现热…...

EIScopus检索 | 2023年智能交通与未来出行国际会议(CSTFM 2023)

会议简介 Brief Introduction 2023年智能交通与未来出行国际会议(CSTFM 2023) 会议时间&#xff1a;2023年7月28日-30日 召开地点&#xff1a;中国长沙 大会官网&#xff1a; CSTFM 2023-2023 International Conference on Smart Transportation and Future Mobility(CSTFM 202…...

如何系列 如何在Windows和Linux安装Nginx

文章目录 Windows一 下载Nginx二 启动Nginx三 验证 Linux一 安装依赖项二 下载Nginx源码包三 安装四 验证五 常用命令附录 Nginx是一款高性能的开源Web服务器和反向代理服务器&#xff0c;被广泛用于构建现代化的Web应用和提供静态内容。本篇博文将教你如何在Windows和Linux操作…...

“1+X+N”模式助力企业数字化转型

近期&#xff0c;中电金信顺利完成某股份制银行“基于战略解析与业务架构的全行科技规划项目”交付。针对客户的实际业务需求&#xff0c;中电金信采用“1XN”服务模式&#xff0c;服务客户全面的企业架构转型规划。项目组联合行方协同创新&#xff0c;首次将企架建模方法应用于…...

JavaEE(系列3) -- 多线程(线程的中断与线程等待)

新内容开始之前,我们总结一个知识点. Thread类中的start方法和run方法的区别? start(): 用start方法来启动线程&#xff0c;真正实现了多线程运行&#xff0c;这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程&#…...

想装一台自己的电脑,可以先了解下这些问题

时间&#xff1a;2023年5月11日19:09:56 ✨✨✨问题清单&#xff1a; ↪️计算机中CPU和内存是什么&#xff1f;分别有什么作用&#xff1f; ↪️为什么计算机中要有内存&#xff1f;CPU访问内存中的数据和访问硬盘中的数据有什么差别&#xff1f; ↪️CPU的基准速度表示什…...

Redis未授权漏洞复现

Redis简介 Redis是C语言开发的一个开源高性能&#xff08;key-value&#xff09;键值对类型的内存NoSQL数据库&#xff0c;可以用作数据库、缓存、信息中间件(性能非常优秀&#xff0c;支持持久化到硬盘且高可用)。由于其自身特点&#xff0c;可以广泛应用在数据集群&#xff…...

跳槽,如果没有更好的选择,可以去美团试试···

在美团干了半年&#xff0c;说一下自己的感受&#xff0c;美团是一家福利中等&#xff0c;工资待遇中上&#xff0c;高层管理团队强大&#xff0c;加班强度一般&#xff0c;技术不错&#xff0c;办公环境一般&#xff0c;工作氛围中上&#xff0c;部门差距之间工作体验差距巨大…...

Java10

Java10 &#xff08;一&#xff09;、配置文件&#xff08;二&#xff09;、多线程2.1 并发和并行2.2 多线程的实现方式2.3 常见成员方法2.3.1 线程的优先级2.3.2 守护线程&#xff08;备胎线程&#xff09;2.3.3 礼让线程和插入线程 2.4 线程生命周期2.5 线程安全问题2.6 锁2.…...

IMS call通话类型对比差异

IMS call呼入/呼出流程对比 呼出MO call大致流程 1)UE发送INVITE消息发起IMS call 2)UE接收网络返回的100 Trying 3)UE接收183 Session Progress 4)UE发送PRACK确认收到183 5)UE接收200 OK(PRACK) 6)UE发送UPDATE进行precondition流程 7)UE接收200 OK(UPDATE) 8…...

5.2 中心极限定理

学习目标&#xff1a; 要学习中心极限定理&#xff0c;我会采取以下几个步骤&#xff1a; 学习基本概念&#xff1a;了解什么是随机变量、样本、总体、概率密度函数等基本概念&#xff0c;为学习中心极限定理打下基础&#xff1b;学习正态分布&#xff1a;中心极限定理的核心…...

JVM 内存分哪几个区,如和判断一个对象是否存活

JVM 内存分哪几个区&#xff0c;每个区的作用是什么? java 虚拟机主要分为以下一个区:方法区&#xff1a; 1. 有时候也成为永久代&#xff0c;在该区内很少发生垃圾回收&#xff0c;但是并不代表不发生 GC&#xff0c;在这里进行的 GC 主要是对方法区里的常量池和对类型…...

在Spring Boot微服务使用Jedis操作Redis List列表

记录&#xff1a;408 场景&#xff1a;在Spring Boot微服务使用Jedis操作Redis List列表。 版本&#xff1a;JDK 1.8,Spring Boot 2.6.3,redis-6.2.5,jedis-3.7.1。 1.微服务中配置Redis信息 1.1在application.yml中Jedis配置信息 hub:example:redis:jedis:host: 192.168.…...

springboot + vue 部署 阿里云云服务器 ECS

安装所需文件 安装mysql5.7 下载MySQL的yum源配置 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm安装MySQL的yum源 yum -y install mysql57-community-release-el7-11.noarch.rpm使用yum方式安装MySQL5.7&#xff08;下载需要点时间&#xf…...

mysql 日期 计算 时间差 天数差

mysql计算两个日期的时间差 第一种&#xff1a;TIMESTAMPDIFF函数 三个参数。第一个参数是比较的类型&#xff1a;FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER、YEAR几种类型。第二、三参数是时间&#xff0c;后减前: SELECT TIMESTAMPDIFF(DAY,20…...

不用网闸、FTP的话 如何实现内外网数据交换?

网络隔离已然成为很多企业首选的数据保护方式&#xff0c;即使是内部人员之间&#xff0c;也是不能随意的发送敏感文件的。但是&#xff0c;文件的流转交互&#xff0c;又是不可避免的&#xff0c;网络隔离保障了企业网络安全&#xff0c;但在具体实践中仍需解决各隔离网间的数…...

探寻Spring MVC的奥秘:内部组件与工作流程详解

Spring MVC是一个基于MVC架构模式的Web框架&#xff0c;是Spring框架的一个组件。它提供了一套Web应用程序开发的全面解决方案&#xff0c;包括从请求到响应的处理流程、处理请求的控制器、视图解析器、国际化和验证器等。 在这篇文章中&#xff0c;我们将介绍Spring MVC框架的…...

eclipse svn ClassNotFoundException: javassist.ClassPool

eclipse 五月 10, 2023 9:26:49 上午 org.apache.catalina.core.StandardContext filterStart 严重: Exception starting filter struts2 java.lang.reflect.InvocationTargetException - Class: com.opensymphony.xwork2.inject.ContainerImpl M e t h o d I n j e c t o r F…...

广度优先遍历搜索迷宫最短路径

思路分析 由于广度是扩散逐层的方式遍历&#xff0c;相当于是多条路同时跑&#xff0c;最后先到终点就是最短路径了。 广度优先搜索主要使用队列来进行处理 路径用一个单独的vector存储&#xff0c;每一个点的坐标由二维转为一维&#xff0c;如(2, 3)存储在vector中下标为2*…...

分布式计算基础知识

分布式系统的概念 分布式系统是由多个独立计算机组成的系统&#xff0c;这些计算机通过网络进行通信和协作&#xff0c;共同完成一个任务。分布式系统的特点是具有高可用性、可扩展性和容错性。 在分布式系统中&#xff0c;每个计算机节点都可以独立地执行任务&#xff0c;同…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...