ggplot2 热图绘制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ggplot2 热图绘制相关的知识,希望对你有一定的参考价值。

参考技术A

mtcars

可以发现共线性矩阵的左上和右下是一模一样的两部分;画出一部分

参考:
ggplot2 : Quick correlation matrix heatmap

基于非数字第三变量的热图轴重新排序 - ggplot2

【中文标题】基于非数字第三变量的热图轴重新排序 - ggplot2【英文标题】:Reorder axis of heatmap based on non-numeric third variable - ggplot2 【发布时间】:2021-08-20 12:52:57 【问题描述】:

我正在 ggplot2 中创建热图,我想重新排列 Y 轴。

查看过去的帖子后,我了解如何根据 X 轴和 Y 轴变量重新排序,但我想根据数据框中的第三个未绘制的非数字变量重新排序 Y 轴.

我的热图显示术语与治疗,但每个术语都有一个源数据库 - 这就是我想要订购术语的地方。 如您所见,术语 A 和 D 来自数据库 2,术语 B 来自数据库 1,术语 C 来自数据库 3。 所以y轴的顺序应该是Term B、Term A、Term D、Term C。 目前排序为 Term D, C, B, A

编辑:这实际上只是我的数据的一部分,我有很多术语,所以不想手动指定顺序。不过我没有太多数据库,所以很乐意手动订购。

library(ggplot2)
terms <- rep(c("Term A", "Term B", "Term C", "Term D"), 3)
treatments <- c(rep("Treatment 1", 4), rep("Treatment 2", 4), rep("Treatment 3", 4))
source <- rep(c("Database 2", "Database 1", "Database 3", "Database 2"), 3)
data <- c(1.923598e-06, 1.307195e-04, 1.307195e-01, 1.307195e-04, 1.740412e-03, 3.446243e-05, 3.834140e-02, 2.654140e-03, 2.976543e-04, 1.111198e-06, 1.376595e-04, 2.923598e-06)
df <- data.frame(terms, treatments, source, data)
ggplot(df, aes(x=treatments, y=terms, fill=-log10(data))) +
  geom_tile()

【问题讨论】:

【参考方案1】:

一个快速的解决方案是添加 scale_y_discrete 并使用 limits 参数,您可以使用源变量对 y 轴进行排序:

 ggplot(df, aes(x=treatments, y=terms, fill=-log10(data))) +
  geom_tile() +scale_y_discrete(limits=unique((df$terms)[order(df$source)]))

【讨论】:

这很好用——但我的问题是我实际上有大约 50 个术语,所以我真的不想手动订购它们。抱歉,我应该更清楚一点。 刚刚编辑了我的答案以适合您的大数据框

以上是关于ggplot2 热图绘制的主要内容,如果未能解决你的问题,请参考以下文章

R语言可视化分别使用lattice包和ggplot2包可视化热图(heatmap)并绘制热力图对应的系统树图(dendrogram)实战

基于非数字第三变量的热图轴重新排序 - ggplot2

R 数据可视化 —— 聚类热图 pheatmap

R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图2D密度估计MASS包中的kde2d函数实现2D密度估计geom_density2d函数可视化二维密度图

具有范围值颜色的 ggplot2 热图

R:使用 ggplot2 的离散热图