使用 R 创建热图
Posted
技术标签:
【中文标题】使用 R 创建热图【英文标题】:Creating a heatmap using R 【发布时间】:2021-09-26 00:58:59 【问题描述】:我想创建一个热图来显示我拥有的数据。数据由 3 列和 100 行组成。我使用以下代码使用 R 中的 ggplot 包创建热图。
x=c("x1","x2","x3")
y=paste0("var",seq(1,100))
datax=expand.grid(x,y)
datax$z=runif(300,0,5)
require(ggplot2)
ggplot(datax, aes(Var1, Var2, fill= z)) +
geom_tile()
我得到如下输出:
我想让这个图表更漂亮。即,这里每个单元格都有一个矩形形状。如何使它显示为正方形?还有没有办法删除行名并将列标题放在图的顶部?
谢谢
【问题讨论】:
这能回答你的问题吗? correlation heatmap using heatmaply R @Galen 恐怕不是。我只想为原始数据创建一个热图。不适用于相关性 【参考方案1】:它们之所以是矩形的,是因为y轴上有很多值,而x轴上只有几个值。如果您希望它们是方形的,则需要明确保存具有特定大小的绘图。
在ggplot
命令(没有+
)之后立即运行此命令,然后使用width
和height
。默认情况下,它将保存最后显示的图。
ggsave("filename.pdf", device = "pdf", width = <w>, height = <h>)
要获得顶部的 x 标签,请使用 + scale_x_discrete(position="top")
。要完全删除 y 轴变量,请使用 + theme(axis.text.x=element_blank())
(均在 ggplot 调用之后)
其他想法:
如果您需要更多空间,请在geom_tile()
之后删除带有+ xlab(NULL) + ylab(NULL)
的x 和y 标签
因为这可能是一个又高又瘦的图,这取决于您是否有另一个变量 var3
可用于对 y 轴进行子集化,您可以使用 facet_wrap(~var3)
将巨大的热图分解为更小、更方形的热图
【讨论】:
以上是关于使用 R 创建热图的主要内容,如果未能解决你的问题,请参考以下文章