当前位置: 首页 > 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;同…...

手把手教你:Trae 中不写一行代码,一句话实现增删查改

1. 下载并运行 RuoYi 项目 基于您提供的下载地址和操作步骤&#xff0c;流程如下&#xff1a; 1.1. 下载 RuoYi 项目 官网地址&#xff1a;如链接3所示&#xff0c;RuoYi的官方网址是 https://www.ruoyi.vip/。 下载&#xff1a;在官网&#xff0c;您可以根据需要下载不同版…...

别再乱调灯光和材质了!UE5渲染性能优化的三个核心禁忌与正确姿势

UE5渲染性能优化的三大禁忌与实战解决方案 在虚幻引擎5的渲染管线中&#xff0c;性能优化往往成为项目后期最棘手的挑战之一。许多开发者习惯性地将注意力集中在视觉效果上&#xff0c;却忽略了渲染效率的平衡。当场景复杂度达到临界点时&#xff0c;那些看似无害的高精度贴图…...

解锁B站视频下载:5个高效技巧让你轻松获取心仪内容

解锁B站视频下载&#xff1a;5个高效技巧让你轻松获取心仪内容 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi/B…...

高效构建智能媒体库:MetaTube插件全方位应用指南

高效构建智能媒体库&#xff1a;MetaTube插件全方位应用指南 【免费下载链接】jellyfin-plugin-metatube MetaTube Plugin for Jellyfin/Emby 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-metatube MetaTube是一款专为Jellyfin和Emby设计的开源元数据…...

服装设计降本增效:Nano-Banana软萌拆拆屋缩短打样周期实证

服装设计降本增效&#xff1a;Nano-Banana软萌拆拆屋缩短打样周期实证 在服装设计行业&#xff0c;从创意草图到实物样衣&#xff0c;打样环节往往是成本最高、耗时最长的“拦路虎”。设计师需要反复与版师、样衣工沟通&#xff0c;绘制复杂的工艺图&#xff0c;一个款式来回修…...

避坑指南:OpenClaw对接nanobot镜像的3大常见错误与解决方法

避坑指南&#xff1a;OpenClaw对接nanobot镜像的3大常见错误与解决方法 1. 为什么需要这份避坑指南&#xff1f; 上周我在本地部署nanobot镜像时&#xff0c;原本以为半小时就能搞定的事情&#xff0c;硬是折腾了整整一个下午。这个超轻量级的OpenClaw镜像确实很吸引人——内…...

怎样快速掌握mGBA测试套件:5个专业技巧确保模拟器稳定性

怎样快速掌握mGBA测试套件&#xff1a;5个专业技巧确保模拟器稳定性 【免费下载链接】mgba mGBA Game Boy Advance Emulator 项目地址: https://gitcode.com/gh_mirrors/mg/mgba mGBA作为一款开源的高精度Game Boy Advance模拟器&#xff0c;其测试套件是确保模拟器稳定…...

图像处理中的频域魔法:用傅里叶变换消除噪点与增强细节的3种技巧

图像处理中的频域魔法&#xff1a;用傅里叶变换消除噪点与增强细节的3种技巧 当你在处理一张模糊的医学影像或卫星图片时&#xff0c;是否想过那些隐藏在像素背后的频率秘密&#xff1f;傅里叶变换就像一台精密的频谱分析仪&#xff0c;能将图像从空间域转换到频域&#xff0c…...

基于MPC的双馈风机暂态过电压抑制策略研究

基于MPC的双馈风机暂态过电压抑制策略研究 摘要 弱电网条件下,双馈风机(DFIG)在电网故障清除瞬间易发生暂态过电压。传统矢量控制(VC)中,无功电流外环PI控制器存在响应滞后,导致无功功率回撤速度无法匹配系统电压的突变。本文提出一种基于模型预测控制(MPC)的转子侧…...

格密码学入门:从基础定义到核心困难问题解析

1. 格密码学&#xff1a;当数学遇上信息安全 第一次听说"格密码学"这个词时&#xff0c;我正盯着电脑屏幕上一堆三维点阵图发呆。那是我在密码学实验室实习的第三天&#xff0c;导师随手画了两个相交的菱形&#xff0c;说&#xff1a;"这就是未来可能取代RSA的数…...