R 实战| 几种常用的绘制离散变量热图/方块图/华夫图的方法

简介: R 实战| 几种常用的绘制离散变量热图/方块图/华夫图的方法

前言


多组学文章经常出现非连续变量的热图或者叫格子图。举几个例子:

image.png

image.png

以上两个图都来自2021.09的一篇Cell,标题是Proteogenomic characterization of pancreatic ductal adenocarcinoma。今天就不细讲这两幅图了。这种图给我们展示离散/分类变量的差异提供了一个思路。今天就简单介绍几种常用的画这种图的方法。


常用方法


构建一个分类变量组成的示例数据。

library(ggplot2)
library(tidyverse)
library(reshape2)
library(RColorBrewer)
clinical.df=data.frame(
  patient=paste("P",seq(1:15),sep = ""),
  age=sample(c("young","old"),15,replace = T),
  gender=sample(c("male","female"),15,replace = T),
  symptom=sample(c("mild","moderate","severe"),15,replace = T),
  RNAseq=sample(c("yes","no"),15,replace = T),
  WES=sample(c("yes","no"),15,replace = T)
)
head(clinical.df)
> head(clinical.df)
  patient   age gender  symptom RNAseq WES
1      P1   old female moderate    yes  no
2      P2   old   male moderate    yes  no
3      P3   old   male moderate    yes yes
4      P4 young female   severe    yes yes
5      P5   old female moderate     no  no
6      P6 young   male moderate     no  no
x
> head(clinical.df2)
  patient variable value
1      P1      age   old
2      P2      age   old
3      P3      age   old
4      P4      age young
5      P5      age   old
6      P6      age young
> head(clinical.df2)
  patient variable value
1      P1      age   old
2      P2      age   old
3      P3      age   old
4      P4      age young
5      P5      age   old
6      P6      age young

geom_tile

Color<-brewer.pal(9, "Set3") # 设置颜色
# 设置因子顺序
clinical.df2$patient=factor(clinical.df2$patient,levels = paste("P",seq(1:15),sep = ""))
clinical.df2$variable=factor(clinical.df2$variable,levels = c("WES","RNAseq","symptom","gender","age"))
ggplot(clinical.df2, aes(x = patient, y = variable, fill = value)) +
  geom_tile(color = "white", size = 0.25) +
  scale_fill_manual(name = "Category",
                    #labels = names(sort_table),
                    values = Color)+
  theme(#panel.border = element_rect(fill=NA,size = 2),
    panel.background = element_blank(),
    plot.title = element_text(size = rel(1.2)),
    axis.title = element_blank(),
    axis.ticks = element_blank(),
    legend.title = element_blank(),
    legend.position = "right")

image.png

ggwaffle

devtools::install_github("liamgilbey/ggwaffle") # 下载包
library(ggwaffle)
ggplot(clinical.df2, aes(patient, variable, fill = value)) + 
  geom_waffle()+
  scale_fill_manual(name = "Category",
                    #labels = names(sort_table),
                    values = Color)+
  theme(#panel.border = element_rect(fill=NA,size = 2),
    panel.background = element_blank(),
    plot.title = element_text(size = rel(1.2)),
    axis.title = element_blank(),
    axis.ticks = element_blank(),
    legend.title = element_blank(),
    legend.position = "right")

和geom_tile异曲同工。

image.png


ComplexHeatmap


ComplexHeatmap应该是最能还原本文前言图的包,不过我这里暂时还没时间搞定,后续发复现版本的代码。


row.names(clinical.df) <- clinical.df[,1]
clinical.df <- clinical.df[,-1]
clinical.df3 <- data.frame(t(clinical.df)) 
# 上面的代码为了将数据转为热图矩阵
library(ComplexHeatmap)
Heatmap(clinical.df3)

image.png

未经雕饰的图确实不是很美观。


总结


以上就是我所知的几种常用的画离散变量的热图的方法。如果大家有更巧妙的想法,欢迎在后台留言互相学习交流。


相关文章
|
机器学习/深度学习 算法 调度
【智能优化算法-鲸鱼算法】基于鲸鱼算法求解多目标优化问题附matlab代码(NSWOA)
【智能优化算法-鲸鱼算法】基于鲸鱼算法求解多目标优化问题附matlab代码(NSWOA)
【智能优化算法-鲸鱼算法】基于鲸鱼算法求解多目标优化问题附matlab代码(NSWOA)
|
Ubuntu C语言 SEO
百度搜索:蓝易云【Ubuntu安装GCC10教程。】
请注意,具体的安装步骤可能会因Ubuntu版本和软件包管理工具的变化而有所不同。以上步骤适用于大多数Ubuntu版本,但如果遇到任何问题,请参考官方文档或其他可靠资源以获取更详细的安装说明。
401 1
|
前端开发 JavaScript 容器
bootstrap-treeview树
bootstrap-treeview树
399 0
|
机器学习/深度学习 人工智能 自然语言处理
PGL图学习之图神经网络GNN模型GCN、GAT[系列六]
本次项目讲解了图神经网络的原理并对GCN、GAT实现方式进行讲解,最后基于PGL实现了两个算法在数据集Cora、Pubmed、Citeseer的表现,在引文网络基准测试中达到了与论文同等水平的指标。 目前的数据集样本节点和边都不是很大,下个项目将会讲解面对亿级别图应该如何去做。
|
数据可视化
R语言多图合成:优雅地在一个画布上展示多个图形
【8月更文挑战第30天】R语言提供了多种方法来实现多图合成,从基础的`par()`函数到高级的`gridExtra`、`ggplot2`和`cowplot`包,每种方法都有其独特的优势和应用场景。通过掌握这些技术,你可以根据实际需求灵活地组合图形,从而更高效地展示和解读数据。希望本文能为你提供一些有益的参考和启示。
1109 2
|
9月前
|
安全 Linux 网络安全
ssh-server配置文件参数PermitRootLogin介绍
**PermitRootLogin** 是 SSH 服务(sshd)配置文件 /etc/ssh/sshd_config 中的一个参数,用于控制是否允许通过 SSH 直接以 root 用户身份 登录到服务器。这个设置是为了增强系统的安全性,特别是在远程访问和管理服务器时。
1586 0
|
移动开发 jenkins 持续交付
jenkins配置git
通过上述步骤,您可以在 Jenkins 中成功配置 Git,从而实现自动拉取代码并进行构建和部署。这些配置不仅提高了开发效率,还保证了代码的连续集成和交付。确保每一步配置正确,以避免在实际使用中遇到问题。
1700 1
|
Shell 数据安全/隐私保护
Mac上HomeBrew安装及换源教程
【8月更文挑战第30天】这是在 Mac 上安装及更换 Homebrew 源的教程。首先通过终端执行命令 `/bin/bash -c &quot;\$\(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh\)` 安装 Homebrew,并使用 `brew --version` 检查是否安装成功。接着可更换软件源以提高下载速度,例如设置中科大为源,并更新相关设置。这将有助于提升 Homebrew 的使用体验。
3225 9
|
数据采集 搜索推荐 数据可视化
使用R语言进行药物动力学分析
【4月更文挑战第27天】R语言在药物动力学分析中扮演关键角色,用于数据处理(如dplyr, readr, tidyr包)、模型建立(如drc包的一室、多室模型)、参数估计(nls, nlsList, lme4, FME包)及结果解释(summary, predict, plot, boot, bayesplot包)。通过实例,展示了如何使用R建立药物吸收和清除模型,助力药物研发和个性化医疗。随着数据分析技术发展,R在药物动力学领域的应用将更加广泛。
718 1
|
机器学习/深度学习 算法 PyTorch
卷积神经网络的结构组成与解释(详细介绍)
卷积神经网络的结构组成与解释(详细介绍)
2583 0