美文网首页收藏
pheatmap依然是做热图的首选

pheatmap依然是做热图的首选

作者: 生信云笔记 | 来源:发表于2024-11-30 14:17 被阅读0次

  每当需要做热图的时候,首先想到就是pheatmap。记不清啥时候第一次使用该包了,但从那以后这就是画热图的第一选择了,因为无论是功能,还是颜值,亦或是操作简易程度都可以算是无可挑剔。如果硬要鸡蛋里挑骨头,那数据很多时注释可能会超出边界可以算作一条。虽然现在有很多其他的选择,但已经习惯了pheatmap,不想花时间去折腾其他的包了。

  这两天画热图就遇到了图例超出边界的情况,所以花时间搞了一下。比如,上图右边的图例显示不全,这得想办法解决一下。其实,明白了pheatmap会返回一个绘图对象,里面包含绘图的所有数据,而且还是图像对象是一个基于gridgtable对象。也许很多人不熟悉grid,但肯定听说过ggplot2,而ggplot2底层基于grid。既然,ggplot2可以那么灵活的变换,grid当然也可以,只不过由于太底层,变换起来有些繁琐而已。

  比如,修正图例显示不全的问题,可以直接修改图例右边的边距,也或者可以通过调整图例位置的方式来解决。下面给出调整图例位置的示例代码:

library(pheatmap)
library(grid)

heat <- pheatmap(mat, annotation_col=annotation_col, show_colnames=F, show_rownames=F)

heat$gtable$grobs[[which(heat$gtable$layout$name == "legend")]]$vp <- viewport(x = 0.7, y = 0.48)
heat$gtable$grobs[[which(heat$gtable$layout$name == "annotation_legend")]]$vp <- viewport(x = 0.1, y = 0.1)

grid.draw(heat)

  这样不仅改变了图例布局,顺带也解决了显示不全的问题,一举两得。可以根据需要改变xy值来定义图例的位置,放在哪你说了算。既然,能够改位置,其他的理所当然也可以变动,还是挺灵活的。

相关文章

网友评论

    本文标题:pheatmap依然是做热图的首选

    本文链接:https://www.haomeiwen.com/subject/nbprsjtx.html