ComplexHeatmap绘制单个热图

目录
  • 前言
  • 一 载入数据,R包
    • 1.1 载入ComplexHeatmap包
    • 1.2 载入数据
    • 1.3 绘制最简单的热图
  • 二 热图修饰
    • 2.1 颜色
      • 1)连续型变量
      • 2)分类型变量
    • 2.2 标题
      • 1)设置行,列和图例的标题
      • 2)设置标题的位置,颜色,字体,大小
      • 3)设置标题的背景
    • 2.3 聚类
      • A:一般设置
      • B:距离方法
      • C:聚类方法
      • D:聚类树的渲染
    • 2.4 设置行列顺序

前言

ComplexHeatmap可以绘制很复杂的热图,能满足日常以及文章所需,本次先简单的介绍单个热图绘制的内容。

单个热图由热图主体和热图组件组成。其中主体可分为行和列;组件可以是标题、树状图、矩阵名称和热图注释,在主图的四周均可,且顺序可调整。

一 载入数据,R包

1.1 载入ComplexHeatmap包

#if (!requireNamespace("BiocManager", quietly = TRUE))
#    install.packages("BiocManager")
#BiocManager::install("ComplexHeatmap")
library(ComplexHeatmap)

1.2 载入数据

为更贴近生信使用场景,直接使用内置的基因表达数据

expr = readRDS(paste0(system.file(package = "ComplexHeatmap"), "/extdata/gene_expression.rds"))
#查看数据
str(expr)
expr[1:4,c(1:4,25:27)]

拿到一个新数据后,除了检查[1:4,1:4]外,也许还需要看看最后几列,另外还需要观察列名称的规律。

去除最后几列,或者只选取列名字包含cell的(TCGA数据处理中也会经常遇到)

mat = as.matrix(expr[, grep("cell", colnames(expr))])

1.3 绘制最简单的热图

Heatmap(mat)

可以看到有很多需要“美化”的地方,别急,一点点来。

二 热图修饰

2.1 颜色

1)连续型变量

可以使用circle::colorRamp2()函数来生成Heatmap()中的颜色映射函数,输入参数为分割位置以及分割点上的颜色。下例中,大于12的值都映射为红色,小于12的值映射为绿色;

library(circlize)</code><code>#c中的范围要根据实际情况设置</code><code>col_fun = colorRamp2(c(8, 12, 16), c("green", "white", "red"))</code><code>Heatmap(mat, name = "mat", col = col_fun)

2)分类型变量

更改分类变量的颜色,需要把所有分类的数字均进行赋值。

discrete_mat = matrix(sample(1:4, 100, replace = TRUE), 10, 10)
colors = structure(1:4, names = c("1", "2", "3", "4")) # black, red, green, blue
Heatmap(discrete_mat, name = "mat", col = colors,
    column_title = "a discrete numeric matrix")

更多颜色修改请参考官方文档,文末的参考资料的链接。

2.2 标题

1)设置行,列和图例的标题

Heatmap(mat,
        name = "legend title", #图例title
        column_title = "I am a column title", #列title
        row_title = "I am a row title",
        column_title_side = "bottom") #行title

2)设置标题的位置,颜色,字体,大小

Heatmap(mat, name = "mat",
        row_title = "row title",
        row_title_rot = 0, #旋转方向
        column_title = "I am a big column title",
        column_title_side = "bottom", #标题位置
        column_title_gp = gpar(fontsize = 20, fontface = "bold",col = "red")) #颜色,字体,大小

3)设置标题的背景

column_title_gp中的填充参数来设置标题的背景颜色

Heatmap(mat, name = "mat",
        column_title = "I am a column title",
        column_title_gp = gpar(fill = "red", col = "white", border = "blue"),
        )

2.3 聚类

聚类是热图可视化的关键组成部分,在ComplexHeatmap包中可以非常灵活的进行设置。

A:一般设置

cluster_rows/columns :是否进行聚类

show_column/row_dend :是否显示聚类树

column/row_dend_side :聚类图绘制的位置

column_dend_height/row_dend_widht :聚类树的高度 和 宽度

Heatmap(mat, name = "mat",</code><code>        cluster_columns = T,  </code><code>        cluster_rows = F, ## turn off row clustering</code><code>        show_column_dend = T, ## hide column dendrogram</code><code>        show_row_dend = F,</code><code>        column_dend_side = "top",  #dendrogram location</code><code>        column_dend_height = unit(4, "cm"))

注意:聚类树的高度 和 宽度有区别。

B:距离方法

可选计算距离的方式包括pearson, spearman以及kendall , 或者计算距离的自定义函数。

Heatmap(mat, name = "mat", clustering_distance_rows = "pearson",
    column_title = "pre-defined distance method (1 - pearson)")

自定义

Heatmap(mat, name = "mat", clustering_distance_rows = function(x, y) 1 - cor(x, y),
    column_title = "a function that calculates pairwise distance")

C:聚类方法

支持hclust()中的聚类方法。

Heatmap(mat, name = "mat", clustering_method_rows = "single")

D:聚类树的渲染

根据聚类结果将聚类树的枝设置不同的颜色

library(dendextend)</code><code>row_dend = as.dendrogram(hclust(dist(mat)))</code><code>row_dend = color_branches(row_dend, k = 4) # `color_branches()` returns a dendrogram object</code><code>Heatmap(mat, name = "mat", </code><code>        cluster_rows = row_dend,</code><code>        row_dend_width  = unit(4, "cm"))

2.4 设置行列顺序

通过row_order/column_order函数自定义其排序,为方便展示选择前30个基因。

mat <- mat[1:30,]
Heatmap(mat, name = "mat",
          row_order = order(as.numeric(gsub("gene", "", rownames(mat)))), #将gene1替换为1,在排序
          column_order = sort(colnames(mat)),
          column_title = "reorder matrix")

注:此处将gene1,gene10 先替换掉gene(不去的话是按照ASCII码),然后按照数值排序。

参考资料:

https://zhuanlan.zhihu.com/p/363769759

https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.htm

以上就是ComplexHeatmap绘制单个热图的详细内容,更多关于ComplexHeatmap绘制单个热图的资料请关注我们其它相关文章!

(0)

相关推荐

  • R语言绘图数据可视化pie chart饼图

    目录 Step 1. 绘图数据的准备 Step2. 绘图数据的读取 Step3.绘图所需package的调用 Step4. 饼图百分比标签准备 Step5.绘图 今天要给大家介绍的Pie chart(饼图),本来是不打算写这个的,因为用Excel画饼图实在是太方便了.本着能少动一下是一下的懒人原则,是不打算用R画的,再说,本小仙不是掌握了R作图大器ggplot2么,实在需要用的时候我就一句ggplot()+geom_pie()不就搞定了. 结果后来用Excel画饼图调整颜色.大小的时候着实有些崩

  • R语言corrplot相关热图分析美化示例及详细图解

    目录 介绍 1.加载包 2.加载数据 3.绘图 4.个性化设置聚类方法 5.个性化添加矩阵 6.颜色设置 介绍 R corrplot包 提供了一个在相关矩阵上的可视化探索工具,该工具支持自动变量重新排序,以帮助检测变量之间的隐藏模式. corrplot 非常易于使用,并在可视化方法.图形布局.颜色.图例.文本标签等方面提供了丰富的绘图选项.它还提供 p 值和置信区间,以帮助用户确定相关性的统计显著性. corrplot()有大约50个参数,但最常见的参数只有几个.在大多数场景中,我们可以得到一个

  • R语言绘图大小设定的操作

    图片大小设定 x = c(1:10) y = c(11:20) par(pin = c(5,3))#pin()函数控制图形的尺寸 plot(x = x, y = y) x = c(1:10) y = c(11:20) par(pin = c(2,3))#pin()函数控制图形的尺寸 plot(x = x, y = y) 补充:R语言ggplot2绘图设置X轴刻度,字体大小及绘图区大小 如下所示: > colnames(data1)[seq(2,ncol(data1), 15)] [1] "

  • R语言绘图数据可视化Ridgeline plot山脊图画法

    目录 Step1. 绘图数据的准备 Step2. 绘图数据的读取 Step3. 绘图所需package的安装.调用 Step4. 绘图 调整透明度 更改顺序 更改线条形状 今天给大家介绍一下Ridgeline plot(山脊图)的画法. 作图数据如下: Step1. 绘图数据的准备 首先要把你想要绘图的数据调整成R语言可以识别的格式,建议大家在excel中保存成csv格式. Step2. 绘图数据的读取 data<-read.csv("your file path", heade

  • R语言两组变量特征相关关系热图绘制画法

    目录 准备数据 简单热图 只对列进行聚类 将相关系数显示在图上 在图上加上显著性标记 准备数据 两组变量的数据可以像下面这样处理,分别保存在两个csv文件中. > # 导入数据及数据预处理 > setwd("D:/weixin/") > rows <- read.csv("rows.csv") > cols <- read.csv("cols.csv") > str(rows) 'data.frame':

  • R语言绘图时输出希腊字符上下标及数学公式实现方法

    目录 希腊字母 上下标 paste 一个复杂的例子 进阶 数学公式 通常在我们写论文时,所需要的统计图是非常严谨的,里面的希腊字符与上下脚标都必须要严格书写.因此在使用R绘图时,如何在我们目标图中使用希腊字符.上标.下标及一些数学公式呢?在本博客中我们会进行详细的说明. 后面我们都将以一个最简单的绘图为例,只是将其标题进行修改. 希腊字母 使用希腊字符.上标.下标及数学公式,都需要利用一个函数:expression(),具体使用方式如下: plot(cars) title(main = expr

  • ComplexHeatmap绘制单个热图

    目录 前言 一 载入数据,R包 1.1 载入ComplexHeatmap包 1.2 载入数据 1.3 绘制最简单的热图 二 热图修饰 2.1 颜色 1)连续型变量 2)分类型变量 2.2 标题 1)设置行,列和图例的标题 2)设置标题的位置,颜色,字体,大小 3)设置标题的背景 2.3 聚类 A:一般设置 B:距离方法 C:聚类方法 D:聚类树的渲染 2.4 设置行列顺序 前言 ComplexHeatmap可以绘制很复杂的热图,能满足日常以及文章所需,本次先简单的介绍单个热图绘制的内容. 单个热

  • R语言ComplexHeatmap绘制复杂热图heatmap

    目录 一 载入R包 数据 1.1 载入ComplexHeatmap包,数据 1.2 绘制最简单的热图 二 常见“表型”注释 读入注释文件 2.1 添加注释,且设置颜色 三 添加“块”注释 3.1 k-means指定K个数 3.2 先验知识知道样本分为几个簇 3.3 根据富集结果添加行注释 四 目标基因分析 4.1 标签展示目标基因 4.2 绘制目标基因热图 ComplexHeatmap|绘制单个热图介绍了单个热图绘制的内容 一 载入R包 数据 1.1 载入ComplexHeatmap包,数据 为

  • Python-Seaborn热图绘制的实现方法

    制图环境: pycharm python-3.6 Seaborn-0.8 热图 import numpy as np import seaborn as sns import matplotlib.pyplot as plt sns.set() np.random.seed(0) uniform_data = np.random.rand(10, 12) ax = sns.heatmap(uniform_data) plt.show() # 改变颜色映射的值范围 ax = sns.heatmap

  • python使用matplotlib绘制热图

    python常用的绘图库就是matplotlib,今天在给公司绘图时,偶然间发现matplotlib可以绘制热图,并且十分简洁,拿出来跟大家分享一下.(由于涉及到公司数据问题,这里采用随机数生成数据进行实验) import random from matplotlib import pyplot as plt from matplotlib import cm from matplotlib import axes from matplotlib.font_manager import Font

  • python matplotlib imshow热图坐标替换/映射实例

    今天遇到了这样一个问题,使用matplotlib绘制热图数组中横纵坐标自然是图片的像素排列顺序, 但是这样带来的问题就是画出来的x,y轴中坐标点的数据任然是x,y在数组中的下标, 实际中我们可能期望坐标点是其他的一个范围,如图: 坐标点标出来的是实际数组中的下标,而我希望纵坐标是频率,横坐标是其他的范围 plt.yticks(np.arange(0, 1024, 100), np.arange(10000, 11024, 100)) #第一个参数表示原来的坐标范围,100是每隔100个点标出一次

  • Python 绘制桑基图全面解析

    目录 前言 题目再现 题目拆解 创建桑基图 添加桑基图选项 返回桑基图绘制完成的对象 3.完整源码 总结&后记 大家好,我是执念斩长河,一个刚刚学习python绘图的学渣,今天愉快学习<python数据可视化>(黑马程序员编著),其中的"绘制桑基图"内容,我将其成功实现,特此写博文纪念一下. 前言 桑基图亦称为桑基能量分流图.桑基能量平衡图,是一种特定类型的流程图,用于展示数据的"流动"变化.桑基图中包含若干条从左到右延展的分支,每条分支的宽度代

  • Python几种绘制时间线图的方法

    目录 Matplotlib 制作 Plotly 绘制 Excel 绘制 Matplotlib 制作 Matplotlib 作为 Python 家族最为重要的可视化工具,其基本的 API 以及绘制流程还是需要掌握的.尤其是该库的灵活程度以及作为众多工具的基础,重要性不言而喻 下面我们来看下该如何绘制一个时间线图表 导入库以及设置 XY 轴数据 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] p

  • jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件HighCharts绘制2D半圆环图效果.分享给大家供大家参考,具体如下: 1.实例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HighCharts 2D半圆环图</title> <script type="text/javascript" src="js/jquer

  • jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件HighCharts绘制2D金字塔图效果.分享给大家供大家参考,具体如下: 1.实例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HighCharts 2D金字塔分布图</title> <script type="text/javascript" src="js/jqu

随机推荐