我非常感谢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。
首先,您需要将数据帧从宽格式格式化为长格式。以下是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)