Closed ixxmu closed 1 week ago
本期分享一个好用的热图绘制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
延伸阅读
*未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。
基迪奥旗下绘图公众号
分享科研绘图技能与工具
欢迎关注与转发~
你的好友拍了拍你
并请你帮她点一下“分享”~
https://mp.weixin.qq.com/s/Bu1Ysl3tK5_D7s1igTJWSQ