• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      未分类

      • 首页
      • 博客
      • 未分类
      • ComplexHeatmap 之 Heatmap Annotations 续(三)

      ComplexHeatmap 之 Heatmap Annotations 续(三)

      • 发布者 weinfoadmin
      • 分类 未分类, 老俊俊的生信笔记
      • 日期 2021年9月10日
      • 评论 0评论

      感谢老俊俊的大力支持。我们会每日跟新,欢迎您关注老俊俊的生信笔记。


      点击上方关注我们





      道阻且长

      本期结束热图的注释系列。

      15、标记注释

      有时热图中有 很多行或列 ,我们想标记其中的一些。anno_mark() 用于标记行或列的子集并用 线连接到标签 。

      anno_mark() 至少需要两个参数,其中 at 是原始矩阵的索引,labels 是相应的文本:

      m = matrix(rnorm(1000), nrow = 100)
      rownames(m) = 1:100
      ha = rowAnnotation(foo = anno_mark(at = c(1:4, 20, 60, 97:100), labels = month.name[1:10]))
      Heatmap(m, name = "mat", cluster_rows = FALSE, right_annotation = ha,
          row_names_side = "left", row_names_gp = gpar(fontsize = 4))
      Heatmap(m, name = "mat", cluster_rows = FALSE, right_annotation = ha,
          row_names_side = "left", row_names_gp = gpar(fontsize = 4), row_km = 4)

      16、汇总注释

      有一个特殊的注释 anno_summary() 只适用于 一列热图 或 一行热图(我们可以说热图只包含一个向量)。它显示了热图中向量的 汇总统计信息。如果相应的向量是离散的,则汇总注释显示为 条形图,如果向量是连续的,则摘要注释是 箱线图。拆分热图时始终使用 anno_summary(),以便可以比较热图切片之间的统计数据。

      第一个示例显示了 离散热图 的汇总注释。条形图显示每个切片中每个级别的比例。热图切片的高度已经可以看到绝对值:

      ha = HeatmapAnnotation(summary = anno_summary(height = unit(4, "cm")))
      v = sample(letters[1:2], 50, replace = TRUE)
      split = sample(letters[1:2], 50, replace = TRUE)

      Heatmap(v, name = "mat", col = c("a" = "red", "b" = "blue"),
          top_annotation = ha, width = unit(2, "cm"), row_split = split)

      第二个示例显示了 连续型 热图的汇总注释。图形参数应该由 gp 手动设置。后面介绍创建和添加箱线图的图例:

      ha = HeatmapAnnotation(summary = anno_summary(gp = gpar(fill = 2:3),
          height = unit(4, "cm")))
      v = rnorm(50)
      Heatmap(v, name = "mat", top_annotation = ha, width = unit(2, "cm"),
          row_split = split)

      通常我们不会绘制这个单列热图。它总是与其他 “主要热图” 结合在一起。例如。带有单列热图的基因表达矩阵,显示该基因是蛋白质编码基因还是 linc-RNA 基因。

      在下文中,我们展示了一个带有两个单列热图的 “主热图” 的简单示例。热图连接的功能将在后面介绍:

      m = matrix(rnorm(50*10), nrow = 50)
      ht_list = Heatmap(m, name = "main_matrix")

      ha = HeatmapAnnotation(summary = anno_summary(height = unit(3, "cm")))
      v = sample(letters[1:2], 50, replace = TRUE)
      ht_list = ht_list + Heatmap(v, name = "mat1", top_annotation = ha, width = unit(1, "cm"))

      ha = HeatmapAnnotation(summary = anno_summary(gp = gpar(fill = 2:3),
          height = unit(3, "cm")))
      v = rnorm(50)
      ht_list = ht_list + Heatmap(v, name = "mat2", top_annotation = ha, width = unit(1, "cm"))

      split = sample(letters[1:2], 50, replace = TRUE)
      lgd_boxplot = Legend(labels = c("group a", "group b"), title = "group",
          legend_gp = gpar(fill = c("red", "blue")))
      draw(ht_list, row_split = split, ht_gap = unit(5, "mm"),
          heatmap_legend_list = list(lgd_boxplot))

      17、缩放、连接注释

      anno_mark() 将热图上的 单行或单列 连接到标签,下一个注释函数 anno_link() 将 行或列的子集 连接到可以添加更全面图形的绘图区域。请参阅以下示例,其中我们为每个行组制作箱线图:

      set.seed(123)
      m = matrix(rnorm(100*10), nrow = 100)
      subgroup = sample(letters[1:3], 100, replace = TRUE, prob = c(1, 5, 10))
      rg = range(m)
      panel_fun = function(index, nm) {
          pushViewport(viewport(xscale = rg, yscale = c(0, 2)))
          grid.rect()
          grid.xaxis(gp = gpar(fontsize = 8))
          grid.boxplot(m[index, ], pos = 1, direction = "horizontal")
          popViewport()
      }
      anno = anno_link(align_to = subgroup, which = "row", panel_fun = panel_fun,
          size = unit(2, "cm"), gap = unit(1, "cm"), width = unit(4, "cm"))
      Heatmap(m, name = "mat", right_annotation = rowAnnotation(foo = anno), row_split = subgroup)

      anno_zoom() 的重要参数是:

      • align_to:它定义了绘图区域(或框)如何对应于热图中的行或列。如果该值是一个索引列表,则每个框对应于列表中一个向量中带有索引的行或列。如果该值是与热图中的行或列长度相同的分类变量(例如因子或字符向量),则每个框对应于分类变量中每个级别的行/列。
      • panel_fun:自定义函数,定义如何在框中绘制图形。该函数必须有一个索引参数,它是框对应的行/列的索引。它可以有第二个参数 nm,它是热图中所选部分的 “名称”。如果将 nm 指定为分类变量或带有名称的列表,则 nm 的相应值来自 align_to。
      • size:盒子的大小。它们可以是纯数字,它们被视为热图总高度/宽度的相对分数。size 的值也可以是绝对单位。
      • gap:盒子之间的间隙。它应该是一个 unit 对象。

      anno_link() 也适用于列注释。

      使用 anno_link() 的另一个示例是将词云列表与行组对应,请参阅博客文章词云作为热图注释以了解如何使用 anno_link() 实现它。

      18、多个注释

      18.1、常规设置:

      如前所述,要在 HeatmapAnnotation() 中放置多个注释,只需将它们指定为 名称-值 对即可。在 HeatmapAnnotation() 中,有一些参数控制多个注释。对于这些参数,它们被指定为长度与注释数量相同的向量,或具有注释子集的命名向量。

      被指定为 向量 、矩阵 和 数据框 的简单注释将自动在热图上有图例。show_legend 控制是否为它们绘制图例。请注意,如果 show_legend 是向量,则 show_legend 的值应为以下格式之一:

      • 长度与简单注释数量相同的逻辑向量。
      • 一个与 totla 注释数量相同长度的逻辑向量。复杂注释的值将被忽略。
      • 用于控制简单注释子集的命名向量。
      ha = HeatmapAnnotation(foo = 1:10,
          bar = cbind(1:10, 10:1),
          pt = anno_points(1:10),
          show_legend = c("bar" = FALSE)
      )
      Heatmap(matrix(rnorm(100), 10), name = "mat", top_annotation = ha)

      gp 控制简单注释的图形参数(填充除外),例如注释网格的边框:

      ha = HeatmapAnnotation(foo = 1:10,
          bar = cbind(1:10, 10:1),
          pt = anno_points(1:10),
          gp = gpar(col = "red")
      )

      border 控制每个注释的边框。show_annotation_name 控制是否显示注释名称。如前所述,该值可以是单个值、向量或命名向量:

      ha = HeatmapAnnotation(foo = 1:10,
          bar = cbind(1:10, 10:1),
          pt = anno_points(1:10),
          show_annotation_name = c(bar = FALSE), # only turn off `bar`
          border = c(foo = TRUE) # turn on foo
      )

      annotation_name_gp、annotation_name_offset、annotation_name_side 和 annotation_name_rot 控制注释名称的样式和位置。后三个可以指定为命名向量。如果将 annotation_name_offset 指定为命名向量,则可以将其指定为字符而不是单元对象:annotation_name_offset = c(foo = "1cm")。

      gap 控制每两个相邻注释之间的空间。该值可以是单个单位或单位向量:

      ha = HeatmapAnnotation(foo = 1:10,
          bar = cbind(1:10, 10:1),
          pt = anno_points(1:10),
          gap = unit(2, "mm"))
      ha = HeatmapAnnotation(foo = 1:10,
          bar = cbind(1:10, 10:1),
          pt = anno_points(1:10),
          gap = unit(c(2, 10), "mm"))

      18.2、注释大小:

      height、width、annotation_height 和 annotation_width 控制完整热图注释的高度或宽度。通常你不需要设置它们,因为所有单个注释都有固定的高度/宽度,整个热图注释的最终高度/宽度是它们的总和。调整这些值的大小将涉及相当复杂的调整,具体取决于它是简单注释还是复杂注释。调整热图列表时也会调整热图注释的大小。在下面的例子中,我们以注释为例,展示了一些调整大小的场景:

      默认值:

      # foo: 1cm, bar: 5mm, pt: 1cm
      ha = HeatmapAnnotation(foo = cbind(1:10, 10:1),
          bar = 1:10,
          pt = anno_points(1:10))

      如果设置了高度,则简单注释的大小不会改变,而只调整复杂注释。如果有多个复杂的注释,则按照其原始大小的比例进行调整:

      # foo: 1cm, bar: 5mm, pt: 4.5cm
      ha = HeatmapAnnotation(foo = cbind(1:10, 10:1),
          bar = 1:10,
          pt = anno_points(1:10),
          height = unit(6, "cm"))

      simple_anno_size 控制所有简单注释的高度。回想一下 ht_opt$simple_anno_size 可以设置为全局控制所有热图中简单注释的大小:

      # foo: 2cm, bar:1cm, pt: 3cm
      ha = HeatmapAnnotation(foo = cbind(1:10, 10:1),
          bar = 1:10,
          pt = anno_points(1:10),
          simple_anno_size = unit(1, "cm"), height = unit(6, "cm"))

      如果 annotation_height 设置为绝对单位向量,则所有三个注释的高度都会相应调整:

      # foo: 1cm, bar: 2cm, pt: 3cm
      ha = HeatmapAnnotation(foo = cbind(1:10, 10:1),
          bar = 1:10,
          pt = anno_points(1:10),
          annotation_height = unit(1:3, "cm"))

      如果 annotation_height 设置为纯数字,作为注释的相对比例,则高度也应设置为绝对单位,并通过比例调整每个单个注释的大小:

      # foo: 1cm, bar: 2cm, pt: 3cm
      ha = HeatmapAnnotation(foo = cbind(1:10, 10:1),
          bar = 1:10,
          pt = anno_points(1:10),
          annotation_height = 1:3, height = unit(6, "cm"))

      annotation_height 可以与相对单位( null 空单位)和绝对单位混合使用:

      # foo: 1.5cm, bar: 1.5cm, pt: 3cm
      ha = HeatmapAnnotation(foo = cbind(1:10, 10:1),
          bar = 1:10,
          pt = anno_points(1:10),
          annotation_height = unit(c(1, 1, 3), c("null", "null", "cm")), height = unit(6, "cm")
      )
      # foo: 2cm, bar: 1cm, pt: 3cm
      ha = HeatmapAnnotation(foo = cbind(1:10, 10:1),
          bar = 1:10,
          pt = anno_points(1:10),
          annotation_height = unit(c(2, 1, 3), c("cm", "null", "cm")), height = unit(6, "cm")
      )

      如果只有简单的注释,简单的设置高度不会改变高度:

      # foo: 1cm, bar: 5mm
      ha = HeatmapAnnotation(foo = cbind(1:10, 10:1),
          bar = 1:10,
          height = unit(6, "cm"))

      除非 simple_anno_size_adjust 设置为 TRUE:

      # foo: 4cm, bar: 2cm
      ha = HeatmapAnnotation(foo = cbind(1:10, 10:1),
          bar = 1:10,
          height = unit(6, "cm"),
          simple_anno_size_adjust = TRUE)

      18.3、注释标签:

      注释的替代标签可以通过 annotation_label 参数设置:

      ha = HeatmapAnnotation(foo = 1:10,
          bar = cbind(1:10, 10:1),
          pt = anno_points(1:10),
          annotation_label = c("Annotation_foo", "Annotation_bar", "Annotation_pt")
      )

      也可以使用复杂的文本设置注释标签:

      ha = HeatmapAnnotation(foo = 1:10,
          bar = cbind(1:10, 10:1),
          pt = anno_points(1:10),
          annotation_label = gt_render(
              c("**Annotation**_<span style='color:red'>foo</span>",
                "**Annotation**_<span style='color:blue'>bar</span>",
                "**Annotation**_<span style='color:green'>pt</span>"),
              gp = gpar(box_fill = "grey")
          )
      )

      从 2.5.6 版本开始,可以配置注释名称的旋转:

      ha = HeatmapAnnotation(foo = 1:10,
          bar = cbind(1:10, 10:1),
          pt = anno_points(1:10),
          annotation_name_rot = 45
      )
      Heatmap(matrix(rnorm(100), 10), name = "mat", top_annotation = ha)

      或在行上:

      ha = rowAnnotation(foo = 1:10,
          bar = cbind(1:10, 10:1),
          pt = anno_points(1:10),
          annotation_name_rot = 45
      )
      Heatmap(matrix(rnorm(100), 10), name = "mat", left_annotation = ha)


      未完待续。


      收官!


      代码 我上传到 QQ 群 老俊俊生信交流群 文件夹里。欢迎加入。加我微信我也拉你进 微信群聊 老俊俊生信交流群 哦。

      群二维码:


      老俊俊微信:




      知识星球:



      所以今天你学习了吗?

      欢迎小伙伴留言评论!

      点击我留言!

      今天的分享就到这里了,敬请期待下一篇!

      最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!

      如果觉得对您帮助很大,赏杯快乐水喝喝吧!

      推 荐 阅 读




      • circlize 之可视化基因组数据

      • circlize 之 Advanced layout

      • circlize 之 circos.heatmap()

      • circlize 之 Implement high-level circular plots

      • 怎么批量合并 data.frame ?

      • QPCRpro 正式上线!

      • circlize 之 Legends

      • QPCR数据添加 p 值和显著性一次解决!

      • circlize 之 Graphics

      • circlize 之 Introduction

      • circlize 之 Circular layout

      • 鉴定差异翻译效率基因之 deltaTE 下篇

      • 鉴定差异翻译效率基因之 deltaTE 上篇

      • 鉴定差异翻译效率基因之 Riborex

      • purrr 包之 list 处理系列函数

      • purrr 包之 map 系列函数

      • 批量绘制单基因相关性图

      • Y 叔出品:ggfun

      • 神器之 computeMatrix + 绘图

      • Deeptools 神器之 bamCoverage

      • 在线版shiny pheatmap!

      • QPCR数据快速分析和绘图 — by shiny

      • RNA-seq:Salmon 快速定量

      • RNA-seq:Salmon 定量结果差异分析

      • 用R提取代表转录本

      • 画个CNS级别火山图!

      • R Tips :split 函数

      • 什么? R 版 Hisat2

      • R Tips :match 函数

      • conda 安装软件报错

      • MetaProfile on Transcript

      • 提取代表转录本之 gencode

      • 附近含有 m6A 修饰的 Stop Codon 序列提取

      • Introduction of m6A

      • RNA-seq : Hisat2+Stringtie+DESeq2

      • shiny VennDiagram

      • shiny CountToTPM/FPKM

      • 自己模仿画个– m6A distribution on transcript

      • 怎么把 shiny App 做成 exe 文件进行分发

      • shiny-server内网穿透

      • 在线版shiny pheatmap!

      • 用shiny创作在线火山图绘制App

      • circlize 之 Create plotting regions

      • circlize 之 High-level genomic functions

      • R 爬虫之爬取文献信息

      • R 爬虫之爬取公众号图片

      • 跟着 cell 绘制条形堆叠图和分面小提琴图

      • R 爬虫之爬取 NCBI 文献

      • ggplot 分面绘图一网打尽

      • circlize 之 chordDiagram 函数

      • circlize 之 chordDiagram 函数高级用法

      • R 绘制柱形偏差图

      • R 爬虫之爬取文献影响因子

      • R爬虫之 html 简介

      • R 爬虫之爬取 CRAN 官网 R 包信息

      • ZhouLab 星球

      • R爬虫之 html 简介(续)

      • 绘制带连线的柱状堆积图

      • 连线柱状堆积图进阶

      • circlize 绘图小问题解答

      • 批量读取文件一文搞定

      • 保姆级:手把手教你绘制环形基因表达热图

      • 环形热图进阶

      • 奇怪的图例作业

      • 基础绘图 grid 包,你值得学习!

      • igraph 牛刀小试

      • ggraph 绘制基因关系网络图

      • 新的 m6A 识别蛋白 MOV10

      • 听说你还不会 plot 函数?

      • 你的 legend 还是画的很丑?

      • 你有一份作业未领取

      • 你要的 ComplexHeatmap TA 来了!

      • ComplexHeatmap 之 A Single Heatmap 续(一)

      • ComplexHeatmap 之 A Single Heatmap 续(二)

      • ComplexHeatmap 之 Heatmap Annotations

      • ComplexHeatmap 之 Heatmap Annotations 续(一)

      • ComplexHeatmap 之 Heatmap Annotations 续(二)

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      ComplexHeatmap 之 Heatmap List
      2021年9月10日

      下一篇文章

      ComplexHeatmap 之 Heatmap Annotations 续(二)
      2021年9月10日

      你可能也喜欢

      2-1675088548
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      30 1月, 2023
      9-1675131201
      如何快速批量修改 Git 提交记录中的用户信息
      26 1月, 2023
      8-1678501786
      肿瘤细胞通过改变CD8+ T细胞中的丙酮酸利用和琥珀酸信号来调控抗肿瘤免疫应答。
      7 12月, 2022

      留言 取消回复

      要发表评论,您必须先登录。

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?