热图 -- 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) 会议时间:2023年7月28日-30日 召开地点:中国长沙 大会官网: CSTFM 2023-2023 International Conference on Smart Transportation and Future Mobility(CSTFM 202…...

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

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

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

想装一台自己的电脑,可以先了解下这些问题
时间:2023年5月11日19:09:56 ✨✨✨问题清单: ↪️计算机中CPU和内存是什么?分别有什么作用? ↪️为什么计算机中要有内存?CPU访问内存中的数据和访问硬盘中的数据有什么差别? ↪️CPU的基准速度表示什…...

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

跳槽,如果没有更好的选择,可以去美团试试···
在美团干了半年,说一下自己的感受,美团是一家福利中等,工资待遇中上,高层管理团队强大,加班强度一般,技术不错,办公环境一般,工作氛围中上,部门差距之间工作体验差距巨大…...

Java10
Java10 (一)、配置文件(二)、多线程2.1 并发和并行2.2 多线程的实现方式2.3 常见成员方法2.3.1 线程的优先级2.3.2 守护线程(备胎线程)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 中心极限定理
学习目标: 要学习中心极限定理,我会采取以下几个步骤: 学习基本概念:了解什么是随机变量、样本、总体、概率密度函数等基本概念,为学习中心极限定理打下基础;学习正态分布:中心极限定理的核心…...

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

在Spring Boot微服务使用Jedis操作Redis List列表
记录:408 场景:在Spring Boot微服务使用Jedis操作Redis List列表。 版本: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(下载需要点时间…...

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

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

探寻Spring MVC的奥秘:内部组件与工作流程详解
Spring MVC是一个基于MVC架构模式的Web框架,是Spring框架的一个组件。它提供了一套Web应用程序开发的全面解决方案,包括从请求到响应的处理流程、处理请求的控制器、视图解析器、国际化和验证器等。 在这篇文章中,我们将介绍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…...

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

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

Mybatis方式完成CRUD操作
Mybatis方式完成CRUD操作 文章目录 Mybatis方式完成CRUD操作1、java以Mybatis方式操作DB1.1、配置数据源-创建 resources/mybatis-config.xml1.2、创建java bean-Monster1.3、配置Mapper接口声明方法1.4、配置xxMapper,完成SQL配置,实现CRUD操作1.5、Test测试 2、需…...

css背景 background的属性作用和值
当我们在 HTML 中设置背景时,可以使用 background 属性。这个属性有多个值,可以使用不同的值来设置背景图片、背景颜色、背景位置、背景重复等等。以下是用表格列出的常见的 background 属性的值及其作用: 属性值描述background-color设置背…...

六大行文化特色知识(上)
中国六大银行都是综合性大型商业银行,业务涵盖面广泛且多元,代表着中国金融界最雄厚的资本和实力,这也是为什么很多毕业生想进国有行的原因,今天小编就带大家来了解一下关于六大行的特色知识,从如信银行考试中心平台了…...

匿名对象的特性和使用场景你知道吗?
目录 一、匿名对象的概念 二、单参数和多参数构造场景的匿名对象 ①只有一个参数的构造函数 ②多个参数的构造函数 三、使用匿名对象作为函数的参数的缺省值 四、只为调用类中的一个函数时 五、匿名对象的特性 1、匿名对象的生命周期只有一行 2、匿名对象具有常性 3、当匿…...

企业应该如何做到数字化转型成功?
01 成长型企业数字化转型的意义 成长型企业想要实现数字化转型,那么我们需要先弄明白,对于成长型企业而言,数字化转型到底具有什么意义?希望实现哪些目标? 可以归结为以下四点: 提升企业的生产力和效率&…...

PBDB Data Service:Bibliographic references for fossil collections(采集记录参考书目)
Bibliographic references for fossil collections(采集记录参考书目) 描述用法参数以下参数可用于检索与通过各种条件选择的集合关联的引用您可以使用以下参数根据书目参考文献的属性筛选结果集以下参数也可用于筛选选择以下参数可用于根据所选匹配项的…...

浅析图形验证码安全
0x01 前言 验证码的定义: 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的…...

论文笔记:基于手机位置信息的地图匹配算法
2015计算机应用 整体思路和论文笔记:Hidden Markov Map MatchingThrough Noise and Sparseness_UQI-LIUWJ的博客-CSDN博客 很像,也是应用HMM进行地图匹配 HMMM本文 状态转移矩阵 观测概率矩阵 正态分布均值都是0,唯一不同的是S…...

因果推断系列16-面板数据与固定效应
因果推断系列16-面板数据与固定效应 1.平行趋势2.未观测变量的控制3.固定效应4.固定效应可视化5.时间效应小结加载第三方包 import warnings warnings.filterwarnings(ignore)import pandas as pd import numpy as np from matplotlib import style from matplotlib import...

第三十三章 弹性池塘2(弹城少年歌词)
熟悉的K26,熟悉的漉菽香味,熟悉的絮絮叨叨。 为什么坎迪总有那么多话想说,就算恢复正常,自己应该也找不出如滔滔江水连绵不断的语词洪流吧。 不,不是词汇量的问题。 当你习惯于将金玉良言与废屁空套话区分开来时&#…...