繁体   English   中英

使用 R 创建热图

[英]Creating a heatmap using R

我想创建一个热图来显示我拥有的数据。 数据由 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()

我得到如下输出: 在此处输入图片说明

我想让这个图表更漂亮。 即,这里每个单元格都有一个矩形形状。 如何使它显示为正方形? 还有没有办法删除行名并将列标题放在图的顶部?

谢谢

它们之所以是矩形,是因为y轴上的值很多,而x轴上的值很少。 如果您希望它们是方形的,您需要显式保存具有特定大小的图。

ggplot命令(没有+ )之后ggplot运行它并使用widthheight 默认情况下,它将保存显示的最后一个图。

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) geom_tile() x 和 y 标签
  • 因为这可能是一个又高又瘦的图,这取决于您是否有另一个变量var3可用于对 y 轴进行子集化,您可以使用facet_wrap(~var3)将巨大的热图分解为更小、更方形的热图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM