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

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


总结


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


相关文章
|
Ubuntu C语言 SEO
百度搜索:蓝易云【Ubuntu安装GCC10教程。】
请注意,具体的安装步骤可能会因Ubuntu版本和软件包管理工具的变化而有所不同。以上步骤适用于大多数Ubuntu版本,但如果遇到任何问题,请参考官方文档或其他可靠资源以获取更详细的安装说明。
347 1
|
机器学习/深度学习 算法 调度
【智能优化算法-鲸鱼算法】基于鲸鱼算法求解多目标优化问题附matlab代码(NSWOA)
【智能优化算法-鲸鱼算法】基于鲸鱼算法求解多目标优化问题附matlab代码(NSWOA)
【智能优化算法-鲸鱼算法】基于鲸鱼算法求解多目标优化问题附matlab代码(NSWOA)
|
机器学习/深度学习 数据采集 算法
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
1141 0
|
机器学习/深度学习 人工智能 自然语言处理
PGL图学习之图神经网络GNN模型GCN、GAT[系列六]
本次项目讲解了图神经网络的原理并对GCN、GAT实现方式进行讲解,最后基于PGL实现了两个算法在数据集Cora、Pubmed、Citeseer的表现,在引文网络基准测试中达到了与论文同等水平的指标。 目前的数据集样本节点和边都不是很大,下个项目将会讲解面对亿级别图应该如何去做。
|
数据可视化 数据挖掘 Python
"揭秘Visium HD黑科技:空间数据分析大揭秘,可视化与整合的艺术之旅!"
【8月更文挑战第20天】近年来,空间转录组技术,特别是Visium HD技术,因其高分辨率与高通量特性,在单细胞生物学领域受到广泛关注。本文通过Python演示了Visium HD数据的全流程分析:从数据准备(读取表达矩阵和空间坐标)、空间数据分析(计算基因表达统计量)、数据可视化(绘制基因表达热图和空间点分布图),到多样本数据整合,为读者提供了实用的分析指南,助力深入探索空间转录组学的奥秘。
399 4
|
11月前
|
SQL 编解码 搜索推荐
R中单细胞RNA-seq分析教程 (10)
R中单细胞RNA-seq分析教程 (10)
|
移动开发 jenkins 持续交付
jenkins配置git
通过上述步骤,您可以在 Jenkins 中成功配置 Git,从而实现自动拉取代码并进行构建和部署。这些配置不仅提高了开发效率,还保证了代码的连续集成和交付。确保每一步配置正确,以避免在实际使用中遇到问题。
1092 1
python 将绘制的图片保存为矢量图格式(svg)
python 将绘制的图片保存为矢量图格式(svg)
python 将绘制的图片保存为矢量图格式(svg)
|
机器学习/深度学习 搜索推荐 数据可视化
无热图不组学!高阶文献热图R语言绘制小专场拿捏
近在阅读近五年的一区高分的机器学习文献,其中有一种图出现频率特别高——热图。《
808 0
|
数据采集 搜索推荐 数据可视化
使用R语言进行药物动力学分析
【4月更文挑战第27天】R语言在药物动力学分析中扮演关键角色,用于数据处理(如dplyr, readr, tidyr包)、模型建立(如drc包的一室、多室模型)、参数估计(nls, nlsList, lme4, FME包)及结果解释(summary, predict, plot, boot, bayesplot包)。通过实例,展示了如何使用R建立药物吸收和清除模型,助力药物研发和个性化医疗。随着数据分析技术发展,R在药物动力学领域的应用将更加广泛。
620 1