使用ggplot2绘制热图(1)

news2024/11/24 23:10:55
#使用ggplot2绘制热图
library(ggplot2)
#清空
rm(list=ls())
gc()
# 创建数据集
data <- mtcars
# 计算相关系数矩阵
cor_matrix <- cor(data)
# 将相关系数矩阵转换为长格式(用于绘制热图)
cor_data <- reshape2::melt(cor_matrix)
str(cor_data)
###简单热图###
# 使用ggplot2绘制热图
ggplot(data = cor_data, aes(x = Var1, y = Var2, fill = value)) +
  geom_tile() +
  scale_fill_gradient(low = "blue", high = "red") +#设置颜色变化范围
  theme_minimal()#设置为简洁主题
###修饰热图###
#1 显示标签
ggplot(data = cor_data, aes(x = Var1, y = Var2, fill = value)) +
  geom_tile() +#geom_raster()也可以
  geom_text(aes(label = round(value,2), size = 3, color = 'white')) +#显示标签
  scale_fill_gradient(low = "blue", high = "red") +
  theme_minimal()
#2 方块转化为其他形状-圆形
ggplot(data = cor_data, aes(x = Var1, y = Var2)) +
  geom_point(aes(color=value,size=abs(value)),na.rm = TRUE) +#size调节大小
  geom_text(aes(label = round(value,2)),color="green") +#显示标签
  scale_fill_gradient(low = "blue", high = "red") +
  theme_minimal()
#3 方块间添加空隙
ggplot(data = cor_data, aes(x = Var1, y = Var2, fill = value)) +
  geom_tile(width = 0.95, height = 1) +
  geom_text(aes(label = round(value,2)),color="green") +#显示标签
  scale_fill_gradient(low = "blue", high = "red") +
  theme_minimal()
#4 小方格添加边框
ggplot(data = cor_data, aes(x = Var1, y = Var2, fill = value)) +
  geom_tile(width = 0.95, height = 0.95,color = "black", linetype = "solid") +
  geom_text(aes(label = round(value,2)),color="green") +#显示标签
  scale_fill_gradient(low = "blue", high = "red") +
  theme_minimal()
#5 添加注释
#注释信息
group <- colnames(cor_matrix) %>% as.data.frame() %>% 
  mutate(group=c(rep("S1",3),rep("S2",3),rep("S3",3),rep("S4",2))) %>%
  mutate(p="group") %>%
  ggplot(aes(.,y=p,fill=group))+
  geom_tile() + 
  scale_y_discrete(position="right") +
  theme_minimal()+xlab(NULL) + ylab(NULL) +#应用简洁主题,去除x轴和y轴
  theme(axis.text.x = element_blank())+#x轴清空
  labs(fill = "Group")#图注标题
gene <- rownames(cor_matrix) %>% as.data.frame() %>%
  mutate(group=rep(c("G1","G2","G3"),
                   times=c(4,4,3))) %>%
  mutate(p="Gene")%>%
  ggplot(aes(p,.,fill=group))+
  geom_tile() + 
  scale_y_discrete(position="right") +#用于设置 y 轴的刻度,在右侧
  theme_minimal()+xlab(NULL) + ylab(NULL) +
  theme(axis.text.y = element_blank(),
        axis.text.x =element_text(
          angle =90,hjust =0.5,vjust = 0.5))+
  labs(fill = "Gene")
#用ggtree做聚类
library(ggtree)
p <- cor_matrix %>% scale(center = T) %>% as.data.frame()
phr <- hclust(dist(p)) %>% 
  ggtree(layout="rectangular",branch.length="none")#对行进行聚类
phc <- hclust(dist(t(p))) %>% 
  ggtree() + layout_dendrogram()#对列进行聚类
#画热图并将以上信息添加进去:
library(aplot)
pic1<-ggplot(data = cor_data, aes(x = Var1, y = Var2, fill = value))#热图绘制
pic2 <- pic1+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))+#x周标签逆时针旋转90度,中心对齐
  xlab(NULL) + ylab(NULL)
#组合
pic2 %>%
  insert_top(group, height = .05)%>%
  insert_left(gene, width = .05)%>%
  insert_left(phr,width=.2)

###简单热图###

 ###修饰热图###

1、

2、

3、

 4、

5、

 

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

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

相关文章

揭秘国产chatGPT大语言模型能力PK之001:ChatGLM1-2

一、问题清单: 1.我女朋友的老公应该叫我什么&#xff1f; 2.为什么我的女朋友还有老公&#xff1f; 3.你觉得我应该怎么做&#xff1f; 4.我想要获得爱情&#xff0c;我女朋友也爱我&#xff0c;我女朋友也爱她的老公&#xff0c;但他的老公恨我&#xff0c;我该怎么办&am…

基于微服务+Java+Spring Cloud +Vue+UniApp +MySql实现的智慧工地云平台源码

基于微服务JavaSpring Cloud VueUniApp MySql开发的智慧工地云平台源码 智慧工地概念&#xff1a; 智慧工地就是互联网建筑工地&#xff0c;是将互联网的理念和技术引入建筑工地&#xff0c;然后以物联网、移动互联网技术为基础&#xff0c;充分应用BIM、大数据、人工智能、移…

【深度学习】NLP中的对抗训练

在NLP中&#xff0c;对抗训练往往都是针对嵌入层&#xff08;包括词嵌入&#xff0c;位置嵌入&#xff0c;segment嵌入等等&#xff09;开展的&#xff0c;思想很简单&#xff0c;即针对嵌入层添加干扰&#xff0c;从而提高模型的鲁棒性和泛化能力&#xff0c;下面结合具体代码…

剑指offer(C++)-JZ56:数组中只出现一次的两个数字(算法-位运算)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 一个整型数组里除了两个数字只出现一次&#xff0c;其他的数字都出现了两次。请写程序找出这两个只出现一…

DoIP学习笔记系列:(五)“安全认证”的.dll从何而来?

文章目录 1. “安全认证”的.dll从何而来?1.1 .dll文件base1.2 增加客户需求算法传送门 DoIP学习笔记系列:导航篇 1. “安全认证”的.dll从何而来? 无论是用CANoe还是VFlash,亦或是编辑cdd文件,都需要加载一个与$27服务相关的.dll(Windows的动态库文件),这个文件是从哪…

ES踩坑记录之UNASSIGNED分片无法恢复

问题背景 换节点 我们线上有一套ES集群&#xff0c;三台机器&#xff0c;共运行了6个节点。一直在线上跑了几个月也一直没出什么问题。然而好巧不巧&#xff0c;就在昨天&#xff0c;集群中的3号节点磁盘出现故障&#xff0c;导致机器直接瘫痪。本来大家觉得问题不大&#xf…

Lua学习记录

Lua基础了解 Lua的注释通过 (-- 单行注释&#xff0c;--[[ ]] 多行注释)可以不加&#xff1b; 多个变量赋值&#xff0c;按顺序赋值&#xff0c;没有则为nil&#xff1b; function的简单用法&#xff0c;多个返回值配合多重赋值&#xff0c;以end为结束标志 Lua下标从1开始&…

R语言生存分析(机器学习)(1)——GBM(梯度提升机)

GBM是一种集成学习算法&#xff0c;它结合了多个弱学习器&#xff08;通常是决策树&#xff09;来构建一个强大的预测模型。GBM使用“Boosting”的技术来训练弱学习器&#xff0c;这种技术是一个迭代的过程&#xff0c;每一轮都会关注之前轮次中预测效果较差的样本&#xff0c;…

二叉树题目:二叉树的直径

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉树的直径 出处&#xff1a;543. 二叉树的直径 难度 3 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root&#xff0c;返回其直径…

Docker 基本管理(一)

目录 一、虚拟化简介 1.1.虚拟化概述 1.2.cpu的时间分片&#xff08;cpu虚拟化&#xff09; 1.3.cpu虚拟化性性能瓶颈 1.4.虚拟化工作原理 1.5 虚拟化类型 1.6 虚拟化功能 ​二、Docker容器概述 2.1 docker是什么&#xff1f; 2.2 使用docker有什么意义&#xff…

nginx上web服务的基本安全优化、服务性能优化、访问日志优化、目录资源优化和防盗链配置简介

一.基本安全优化 1.隐藏nginx软件版本信息 2.更改源码来隐藏软件名和版本 &#xff08;1&#xff09;修改第一个文件&#xff08;核心头文件&#xff09;&#xff0c;在nginx安装目录下找到这个文件并修改 &#xff08;2&#xff09;第二个文件 &#xff08;3&#xff09;…

算法通过村第三关-数组青铜笔记|单调数组

文章目录 前言单调数组问题搜索插入位置&#xff1a;数组合并问题&#xff1a;总结 前言 提示&#xff1a;本份真诚面对自己、坦然无碍面对他人&#xff0c;就是优雅。 数组中的比较经典性问题: 单调数组问题数组合并问题 单调数组问题 参考例子&#xff1a;896. 单调数列…

【BEV Review】论文 Delving into the Devils of Bird’s-eye-view 2022-9 笔记

背景 一般来说&#xff0c;自动驾驶车辆的视觉传感器&#xff08;比如摄像头&#xff09;安装在车身上方或者车内后视镜上。无论哪个位置&#xff0c;摄像头所得到的都是真实世界在透视视图&#xff08;Perspective View&#xff09;下的投影&#xff08;世界坐标系到图像坐标系…

Docker数据卷容器

1.数据卷容器介绍 即使数据卷容器c3挂掉也不会影响c1和c2通信。 2.配置数据卷容器 创建启动c3数据卷容器&#xff0c;使用-v参数设置数据卷。volume为目录&#xff0c;这种方式数据卷目录就不用写了&#xff0c;直接写宿主机目录。 创建c1、c2容器&#xff0c;使用–volum…

MapStruct 中 Java Bean 映射代码生成器的基本使用

文章目录 一、简介&#xff1a;二、背景&#xff1a;三、相关概念&#xff1a;1、映射器&#xff08;Mapper&#xff09;&#xff1a;2、映射方法&#xff08;Mapping Method&#xff09;&#xff1a;3、常规映射方法&#xff08;Regular Mapping Method&#xff09;&#xff1…

多功能杆在智慧农业中的应用

随着农业现代化发展&#xff0c;农业生产和管理不断运用越来越多新技术、新设施&#xff0c;以提高农业生产的综合效率、产品质量&#xff0c;降低管理经营成本。诸如数字化监测、物联网管理、5G远程控制&#xff0c;以及本次我们为大家介绍的多功能智慧杆系统。 多功能智慧杆拥…

股权激励一发布,股价飙升买别墅?

主要内容&#xff1a; 1.股权激励计划的含义 2.股权激励的公告数据 3.公告日到授予日股价变化 4.构建股权激励策略 5.策略运行结果 当谈到现代科技领域的先锋人物&#xff0c;马斯克无疑是其中的佼佼者&#xff0c;他人生经历可谓尽是高光时刻。 1981年10岁的马斯克用攒到…

每日温度(力扣)单调栈 JAVA

给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例 1: 输入: temperatur…

使用VMware安装ubuntu和VMware tool

一、准备工作 提前准备好vmware的安装包还有Ubuntu的系统镜像 安装包已经放到网盘&#xff0c;链接在这篇文章中&#xff1a;https://blog.csdn.net/u014151564/article/details/132267441 二、使用步骤 1、打开虚拟机来到主页 在左侧右键选择新建虚拟机 2、向导步骤如图…

变压器故障诊断(python代码,逻辑回归/SVM/KNN三种方法同时使用,有详细中文注释)

代码运行要求&#xff1a;tensorflow版本>2.4.0,Python>3.6.0即可&#xff0c;无需修改数据路径。 1.数据集介绍&#xff1a; 采集数据的设备照片 变压器在电力系统中扮演着非常重要的角色。尽管它们是电网中最可靠的部件&#xff0c;但由于内部或外部的许多因素&#…