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

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


总结


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


相关文章
|
数据可视化 数据挖掘 数据处理
R绘图 | 浅谈散点图及其变体的作图逻辑
R绘图 | 浅谈散点图及其变体的作图逻辑
300 0
|
数据可视化
绘制热图时看不出颜色差异?四种方式转换处理使结果显而“易”见
绘制热图时看不出颜色差异?四种方式转换处理使结果显而“易”见
19704 2
|
8月前
|
数据可视化
R语言进行数据结构化转换:Box-Cox变换、“凸规则”变换方法
R语言进行数据结构化转换:Box-Cox变换、“凸规则”变换方法
|
8月前
|
存储 人工智能 搜索推荐
R语言Ternary包绘制三元图、RGB三色空间分布图的方法
R语言Ternary包绘制三元图、RGB三色空间分布图的方法
170 1
|
存储 数据可视化 数据挖掘
如何为多个变量绘制联合分布图(pairplot)?
本文介绍基于Python中seaborn模块,实现联合分布图绘制的方法~
433 1
如何为多个变量绘制联合分布图(pairplot)?
|
算法
插值与拟合的区别以及如何选取
插值与拟合的区别以及如何选取
419 0
ggbiplot | 带箭头的主成分分析(PCA)图绘制
ggbiplot | 带箭头的主成分分析(PCA)图绘制
377 0
【MATLAB第24期】源码分享| 基于MATLAB的五种插值方法合集(线性、三次、三次样条、最邻近、分段三次Hermite),解决多变量样本空值插值,以及零值插值
【MATLAB第24期】源码分享| 基于MATLAB的五种插值方法合集(线性、三次、三次样条、最邻近、分段三次Hermite),解决多变量样本空值插值,以及零值插值
|
数据可视化 数据挖掘 Python
跟着Nature Metabolism学作图:R语言ggplot2热图组合树图和双层分组标记
跟着Nature Metabolism学作图:R语言ggplot2热图组合树图和双层分组标记
|
算法 计算机视觉 Python
最邻近插值算法(Python源码示例)
最邻近插值算法(Python源码示例)
304 0
最邻近插值算法(Python源码示例)