• 主页
  • 课程

    关于课程

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

    同等学历教学

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

      关于课程

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

      同等学历教学

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

      未分类

      • 首页
      • 博客
      • 未分类
      • ComplexHeatmap 之 Heatmap List 续(二)

      ComplexHeatmap 之 Heatmap List 续(二)

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

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


      点击上方,关于我们




      AUTUMN



      一夜梧桐一报秋



      本章节结束 热图列表 最后一部分内容。

      11、绘制热图列表

      直接使用 draw() 函数绘制:

      # code only for demonstration
      draw(ht_list, ...)

      12、获取树状图顺序

      row_order()、column_order()、row_dend() 和 column_dend() 可用于从热图列表中检索相应信息。通过以下示例,用法很简单。但请记住,需要将这些函数应用于 draw() 返回的对象:

      ht1 = Heatmap(mat1, name = "rnorm", col = col_rnorm)
      ht2 = Heatmap(mat2, name = "runif", col = col_runif)
      ht_list = ht1 + ht2
      ht_list = draw(ht_list)

      row_order(ht_list)
      ##  [1] 10  4  8  2  1 12 11  6  7  3  9  5
      column_order(ht_list)
      ## $rnorm
      ##  [1]  5  2  7  6 10  1  9  8  4  3
      ##
      ## $runif
      ##  [1]  4 10  2  5  7  6  1  3  8  9

      如果行或列被拆分,返回的值也将是一个列表:

      ht1 = Heatmap(mat1, name = "rnorm", col = col_rnorm)
      ht2 = Heatmap(mat2, name = "runif", col = col_runif, column_km = 2)
      ht_list = ht1 + ht2
      ht_list = draw(ht_list, row_km = 2)

      row_order(ht_list)
      ## $`1`
      ## [1] 7 3 9 5
      ##
      ## $`2`
      ## [1] 10  4  8  2  1 12 11  6

      column_order(ht_list)
      ## $rnorm
      ## $rnorm[[1]]
      ##  [1]  5  2  7  6 10  1  9  8  4  3
      ##
      ##
      ## $runif
      ## $runif$`2`
      ## [1]  4 10  2  5
      ##
      ## $runif$`1`
      ## [1] 7 6 1 3 8 9

      可以为列顺序指定某个热图:

      column_order(ht_list, name = "runif")
      ## $`2`
      ## [1]  4 10  2  5
      ##
      ## $`1`
      ## [1] 7 6 1 3 8 9

      提取树状图的逻辑相同,垂直热图列表的逻辑也相同,因此我们在此不再展示更多示例。

      13、全局更改参数

      ht_opt() 是一个全局控制一些参数的选项函数。你可以通过此全局函数同时为所有热图或者注释设置一些参数。请注意,应该将其放在热图代码之前,并在绘制热图后重置所有选项值,以免影响下一个热图绘制:

      ht_opt

      ##  Option                    Value
      ##  -------------------------:----------
      ##  heatmap_row_names_gp      NULL
      ##  heatmap_column_names_gp   NULL
      ##  heatmap_row_title_gp      NULL
      ##  heatmap_column_title_gp   NULL
      ##  legend_title_gp           NULL
      ##  legend_title_position     NULL
      ##  legend_labels_gp          NULL
      ##  legend_grid_height        NULL
      ##  legend_grid_width         NULL
      ##  legend_border             NULL
      ##  legend_gap                4mm, 4mm
      ##  heatmap_border            NULL
      ##  annotation_border         NULL
      ##  fast_hclust               FALSE
      ##  show_parent_dend_line     TRUE
      ##  verbose                   FALSE
      ##  message                   TRUE
      ##  show_vp                   FALSE
      ##  simple_anno_size          5mm
      ##  DENDROGRAM_PADDING        0.5mm
      ##  DIMNAME_PADDING           1mm
      ##  TITLE_PADDING             NULL
      ##  COLUMN_ANNO_PADDING       1mm
      ##  ROW_ANNO_PADDING          1mm
      ##  HEATMAP_LEGEND_PADDING    2mm
      ##  ANNOTATION_LEGEND_PADDING 2mm
      ##  save_last                 FALSE
      ##  validate_names            TRUE

      有以下参数来控制所有热图:

      • heatmap_row_names_gp:在所有 Heatmap() 中设置 row_names_gp。
      • heatmap_column_names_gp:在所有 Heatmap() 中设置 column_names_gp。
      • heatmap_row_title_gp:在所有 Heatmap() 中设置 row_title_gp。
      • heatmap_column_title_gp:在所有 Heatmap() 中设置 column_title_gp。
      • heatmap_border:在所有 Heatmap() 中设置边框。

      以下参数控制图例:

      • legend_title_gp:在所有热图图例和注释图例中设置 title_gp。
      • legend_title_position:在所有热图图例和注释图例中设置 title_position。
      • legend_labels_gp:在所有热图图例和注释图例中设置 labels_gp。
      • legend_grid_width:在所有热图图例和注释图例中设置网格宽度。
      • legend_grid_height:在所有热图图例和注释图例中设置 grid_height。
      • legend_border:在所有热图图例和注释图例中设置边框。

      以下参数控制热图注释:

      • annotation_border:在所有 HeatmapAnnotation() 中设置边框。
      • anno_simple_size:设置简单注释的大小。

      以下参数控制热图组件之间的间距:

      • DENDROGRAM_PADDING:树状图和热图主体之间的空间。
      • DIMNAME_PADDING:行/列名称和热图主体之间的空间。
      • TITLE_PADDING:行/列标题和热图正文之间的空间。
      • COLUMN_ANNO_PADDING:列注释和热图主体之间的空间。
      • ROW_ANNO_PADDING:行注释和热图主体之间的空间。

      你可以通过传统方式(如 base::options())或 $ 运算符获取或设置选项值:

      ht_opt("heatmap_row_names_gp")
      ht_opt$heatmap_row_names_gp

      # to set option values
      ht_opt("heatmap_row_names_gp" = gpar(fontsize = 8))
      ht_opt$heatmap_row_names_gp = gpar(fontsize = 8)

      通过以下方式重置为默认值:

      ht_opt(RESET = TRUE)

      下面的例子展示了全局控制一些图形参数:

      ht_opt(heatmap_column_names_gp = gpar(fontface = "italic"),
          heatmap_column_title_gp = gpar(fontsize = 10),
          legend_border = "black",
          heatmap_border = TRUE,
          annotation_border = TRUE
      )
      ht1 = Heatmap(mat1, name = "ht1", column_title = "Heatmap 1",
          top_annotation = HeatmapAnnotation(foo = 1:10))
      ht2 = Heatmap(mat2, name = "ht2", column_title = "Heatmap 2",
          top_annotation = HeatmapAnnotation(bar = 1:10))
      ht1 + ht2

      ht_opt(RESET = TRUE)

      也可以在 draw() 函数中设置这些全局参数来临时更改全局参数,并在绘制完成后重新设置。

      14、调整注释产生的空白区域

      热图注释可能有注释名称和轴,在最终布局中排列热图组件时也会考虑这些空间。有时,这种调整并不明智,可能会在图中看到不必要的空白区域。

      一种情况是对于没有行名称的矩阵,热图右侧的空间由注释名称的大小决定,这会导致热图和图例之间出现空白。此外,热图列表级别的行标题绘制在注释轴的左侧,如果没有行树状图,则会提供空白区域。

      adjust_annotation_extension 控制是否考虑布局的注释名称和轴的空间。比较以下两个图:

      m = matrix(rnorm(100), 10)
      ht = Heatmap(m, name = "mat",
          top_annotation = HeatmapAnnotation(foo = anno_points(1:10)),
          show_row_dend = FALSE)
      draw(ht, row_title = "fooooooooooo", adjust_annotation_extension = TRUE,  # default
          column_title = "adjust_annotation_extension = TRUE")

      draw(ht, row_title = "fooooooooooo", adjust_annotation_extension = FALSE,
          column_title = "adjust_annotation_extension = FALSE")

      另一种部分解决空间问题的方法是将注释名称向左移动并使用 heamtap 级别的行标题:

      Heatmap(m, name = "mat",
          top_annotation = HeatmapAnnotation(foo = anno_points(1:10),
              annotation_name_side = "left"),
          row_title = "fooooooooooo",
          show_row_dend = FALSE)

      但是,有时也需要对注释进行这种调整,例如 当热图很短时:

      ht = Heatmap(m, name = "mat",
          top_annotation = HeatmapAnnotation(foo = anno_points(1:10)),
          show_row_dend = FALSE)
      draw(ht, row_title = "fooooooooooo", adjust_annotation_extension = TRUE,
          column_title = "adjust_annotation_extension = TRUE")

      因此,我们将 adjust_annotation_extension 的默认值设置为 TRUE,用户可以根据具体场景进行配置。

      15、在图周围手动增加空间

      ComplexHeatmap 的布局并不完美,仍有可能将某些文本绘制到绘图区域之外。在这种情况下,您可以在 draw() 函数中手动设置 padding 参数以 增加最终绘图周围的空白区域 。

      padding 的值应该是长度为 4 的单位向量。这四个值分别对应底部、左侧、顶部和右侧的空间。

      下面的例子不是一个完美的例子,因为行名称的最大宽度可以由 max_row_name_width 参数控制,但我们仍然可以用它来演示 padding 的使用:

      m2 = m
      rownames(m2) = paste0("R", 1:10)
      rownames(m2)[1] = "a long long long long long row name"
      ht = Heatmap(m2, name = "mat", row_names_side = "left", show_row_dend = FALSE)
      draw(ht, padding = unit(c(2, 20, 2, 2), "mm")) ## see right heatmap in following



      未完待续。


      收官!


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

      群二维码:


      老俊俊微信:




      知识星球:



      所以今天你学习了吗?

      欢迎小伙伴留言评论!

      点击我留言!

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

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

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



       往期回顾 




      ◀ComplexHeatmap 之 Heatmap List 续(一)

      ◀ComplexHeatmap 之 Heatmap List

      ◀ComplexHeatmap 之 Heatmap Annotations 续(三)

      ◀ComplexHeatmap 之 Heatmap Annotations 续(二)

      ◀ComplexHeatmap 之 Heatmap Annotations 续(一)

      ◀ComplexHeatmap 之 Heatmap Annotations

      ◀ComplexHeatmap 之 A Single Heatmap 续(二)

      ◀ComplexHeatmap 之 A Single Heatmap 续(一)

      ◀你要的 ComplexHeatmap TA 来了!

      ◀你有一份作业未领取

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

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      ComplexHeatmap 之 Legends
      2021年9月10日

      下一篇文章

      ComplexHeatmap 之 Heatmap List 续(一)
      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年
      在线支付 激活码

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