ixxmu / mp_duty

抓取网络文章到github issues保存
https://archives.duty-machine.now.sh/
106 stars 30 forks source link

可拓展型热图轻松炫!好用R包分享 #5553

Closed ixxmu closed 1 week ago

ixxmu commented 1 week ago

https://mp.weixin.qq.com/s/Bu1Ysl3tK5_D7s1igTJWSQ

ixxmu commented 1 week ago

可拓展型热图轻松炫!好用R包分享 by SCIPainter

本期分享一个好用的热图绘制R包superheat,可轻松实现各类拓展型热图的绘制。


不同于pheatmap、complexheatmap等常用热图绘制R包,superheat旨在生成可定制、可拓展的热图,将响应变量、模型结果、相关性信息等数据作为散点图、箱线图、条形图等添加到传统热图中,让使用者可深入探索复杂数据集,并利用数据中存在的异质性来为分析决策提供信息。


下面进入今日份学习!


#相关R包安装与载入:
#install.packages('devtools)
devtools::install_github('rlbarter/superheat')
library(superheat)
library(dplyr)

#使用内置数据集mtcars测试:
dt <- mtcars
head(dt)


#基础热图绘制:
superheat(dt)


#归一化和聚类:
superheat(dt,
          scale = TRUE, #按行归一化
          #分层聚类对行/列排序(但不显示树状图)
          pretty.order.rows = TRUE,
          pretty.order.cols = TRUE)



superheat(dt,
          scale = TRUE,
          #显示聚类树:
          row.dendrogram = TRUE,
          col.dendrogram = TRUE)


#热图美化修改:
superheat(dt,
          scale = TRUE,
          pretty.order.rows = TRUE,
          pretty.order.cols = TRUE,
          #配色自定义:
          heat.pal = c("#E66101", "white", "#5E3C99"),
          #主标题添加:
          title = "Superheat for mtcars",
          title.alignment = "center",
          title.size = 6,
          #行列标签底色和标签角度修改:
          left.label.col = "white",
          bottom.label.col = "white",
          bottom.label.text.angle = 60,
          #格子描边颜色:
          grid.hline.col = "white",
          grid.vline.col = "white",
          grid.hline.size = 0.6,
          grid.vline.size = 0.6)



#拓展图表添加(包括以下):
#scatter:散点图(默认)
#line:线图
#smooth:平滑的线条
#scattersmooth:具有平滑线的散点图
#Scatterline:带连接线的散点图
#bar:条形图
#boxplot:箱线图(带集群)

#添加散点连线图:
superheat(dplyr::select(dt, -mpg),
          scale = TRUE,
          pretty.order.cols = TRUE,
          heat.pal = c("#E66101", "white", "#5E3C99"),
          left.label.col = "white",
          bottom.label.col = "white",
          bottom.label.text.angle = 60,
          grid.hline.col = "white",
          grid.vline.col = "white",
          grid.hline.size = 0.6,
          grid.vline.size = 0.6,
          #添加mpg散点连线图:
          yr = dt$mpg,
          yr.axis.name = "miles per gallon",
          yr.axis.name.size = 13,
          yr.plot.type = "scatterline",
          yr.line.col = "tomato3",
          yr.obs.col = rep("orange", nrow(dt)),
          yr.point.size = 3,
          order.rows = order(dt$cyl) ##按cyl对行排序
          )



#添加拟合曲线散点图:
superheat(dplyr::select(dt, -mpg),
          scale = TRUE,
          pretty.order.cols = TRUE,
          heat.pal = c("#E66101", "white", "#5E3C99"),
          left.label.col = "white",
          bottom.label.col = "white",
          bottom.label.text.angle = 60,
          grid.hline.col = "white",
          grid.vline.col = "white",
          grid.hline.size = 0.6,
          grid.vline.size = 0.6,
          #添加mpg拟合曲线散点图:
          yr = dt$mpg,
          yr.axis.name = "miles per gallon",
          yr.axis.name.size = 13,
          yr.plot.type = "scattersmooth",
          yr.line.col = "tomato3",
          yr.obs.col = rep("orange", nrow(dt)),
          order.rows = order(dt$cyl)
          )


#添加条形图:
superheat(dplyr::select(dt, -mpg),
          scale = TRUE,
          pretty.order.cols = TRUE,
          heat.pal = c("#E66101", "white", "#5E3C99"),
          left.label.col = "white",
          bottom.label.col = "white",
          bottom.label.text.angle = 60,
          grid.hline.col = "white",
          grid.vline.col = "white",
          grid.hline.size = 0.6,
          grid.vline.size = 0.6,
          #添加mpg条形图:
          yr = dt$mpg,
          yr.axis.name = "miles per gallon",
          yr.axis.name.size = 13,
          yr.plot.type = "bar",
          yr.bar.col = "white",
          yr.obs.col = rep("orange", nrow(dt))
          )


#同时添加柱形图和散点连线图:
superheat(dplyr::select(dt, -mpg),
          scale = TRUE,
          pretty.order.cols = TRUE,
          heat.pal = c("#4DAC26", "white", "#D01C8B"), #换个配色
          left.label.col = "white",
          bottom.label.col = "white",
          bottom.label.text.angle = 60,
          grid.hline.col = "white",
          grid.vline.col = "white",
          grid.hline.size = 0.6,
          grid.vline.size = 0.6,
          #添加mpg散点连线图:
          yr = mtcars$mpg,
          yr.axis.name = "miles per gallon",
          yr.axis.name.size = 13,
          yr.plot.type = "scatterline",
          yr.line.col = "#f94763",
          yr.obs.col = rep("#f4a9b4", nrow(dt)),
          yr.point.size = 3,
          #添加每个变量与mpg之间的相关性条形图:
          yt = cor(dt)[-1,"mpg"],
          yt.plot.type = "bar",
          yt.axis.name = "Correlation\nwith mpg",
          yt.axis.name.size = 13,
          yt.bar.col = "white",
          yt.obs.col = rep("#f4a9b4", 10),
          order.rows = order(dt$cyl)
          )


整体使用还是较为简单的,更详细说明和拓展图案例,感兴趣可结合作者说明文档进一步学习:https://rlbarter.github.io/superheat/index.html


好啦,今日分享毕!更多科研干货、绘图技能关注SCIPainter不迷路!



READ MORE


延伸阅读






*未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。


# SCIPainter

基迪奥旗下绘图公众号

分享科研绘图技能与工具

欢迎关注与转发~


你的好友拍了拍你

并请你帮她点一下“分享”~