如何在R中将数据框绘制成热图/网格?

13

我需要R语言的帮助,非常感激。我想绘制一个网格数据框(类似于沿对角线从左上到右下运行的方式)。我看过很多使用ggplot2的例子,但我缺乏足够的R编程经验来操作数据结构;虽然我已经学了LISP和Java编程多年,但我无法理解R :-(

数据如下:

                    tension    cluster     migraineNoAura          migraineAura
tension                  NA          1.5        6.960453e+00          3.596953
cluster        1.943113e+08           NA                  NA                NA
migraineNoAura 8.462798e+00           NA                  NA          7.499999
migraineAura   2.833333e+00           NA        7.148313e+07                NA

这只是一个小数据集的子集,是一个60x60的数据框。请注意NA

我希望得到一个60x60的网格,按值进行着色,并使用数据框中的名称标记x和y轴。


这没有意义。哪些变量被映射到x和y上?你想将哪个值映射到热力图的颜色上?如果你想得到帮助,你需要更具体地说明。 - leeum
1个回答

21

首先,您需要将数据框从宽格式转换为长格式。以下是使用 tidyverse 格式化数据框的示例。

library(tidyverse)

dt2 <- dt %>%
  rownames_to_column() %>%
  gather(colname, value, -rowname)
head(dt2)
#          rowname colname        value
# 1        tension tension           NA
# 2        cluster tension 1.943113e+08
# 3 migraineNoAura tension 8.462798e+00
# 4   migraineAura tension 2.833333e+00
# 5        tension cluster 1.500000e+00
# 6        cluster cluster           NA

现在我们准备好使用ggplot2中的geom_tile函数绘制热力图了。

ggplot(dt2, aes(x = rowname, y = colname, fill = value)) +
  geom_tile()

输入图片说明


谢谢!那正是我所需要的。而且解释得非常好。 - Anthony Nash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接