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

Ant*_*ash 3 r ggplot2

我非常感谢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
Run Code Online (Sandbox Code Playgroud)

这只是一个很小的子集,它是60x60的数据帧。注意NAs。

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

www*_*www 5

首先,您需要将数据帧从宽格式格式化为长格式。以下是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
Run Code Online (Sandbox Code Playgroud)

现在,我们准备使用来使用ggplot2绘制热图geom_tile

ggplot(dt2, aes(x = rowname, y = colname, fill = value)) +
  geom_tile()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明