如何关联数据框上的所有列并构建热图?

How to correlate all columns on dataframe and build a heatmap?

我有一个数据框,其中我的测量值按月份的天数分隔,我想在月份之间建立一个相关矩阵(热图),如下例所示:

感谢您的帮助!我的数据头是:

> head(month)
          Jan         Feb          Mar          Apr          May
1 18.06474972   11.399055 -31.03085327  127.2022133 -3460.850586
2 51.03550959 461.5850525  95.19575119  243.0290451  -2083.35199
3 47.54027748 110.2497387 -74.04249191  546.8690033 -1276.771118
4 340.8937378 282.1457062  74.03128743  322.6983643 -203.3483124
5 247.5398369 30.00830674  370.5808411  416.0554199  121.7065811
6 399.5107269 922.6151428  439.3453064 -35.20425129 -1469.418518
           Jun         Jul         Aug          Sep          Oct
1  39.49685574 2622.950073 1649.752869   1238.56366  500.0726166
2  380.0546722 2552.876099 2572.219482  525.0535278  1092.828491
3  278.1513977 1118.665558  2370.05896  561.7017517  880.8520813
4  1334.320251 1658.281433 588.7766266  316.3756104   331.518219
5  681.0978546 1830.663025 436.6187897  188.4522657 -106.0038891
6 -69.24006653 1645.978577 2079.013062 -116.1453476  292.2966232
           Nov          Dec
1 -251.1712646  196.3089867
2 -2490.553711  37.59177971
3 -1460.746155  251.9935303
4  425.8812321  345.0469666
5  253.5491486 -150.1276989
6  2654.713806 -1673.095764

您可以尝试如下操作:

library(pheatmap)
month = data.frame(matrix(runif(120),ncol=12))
colnames(month) = format(ISOdate(2004,1:12,1),"%B")

pheatmap(cor(month),cluster_rows = FALSE, cluster_cols =FALSE)

corrplot 包有多种显示相关图的格式。这里有一些。 example(corrplot)example(corrplot.mixed) 显示其他可能性。

如题中,第二个情节:

  1. 使用 pals 包作为调色板(另一种可能是 RColorBrewer),+1 使用栗色,-1 使用浅蓝色,
  2. 将相关性的数值放在每个图块上

但您可以根据需要更改配色方案 and/or 格式。

library(corrplot)
library(pals)

opar = par(mfcol = 1:2)
wat <- adjustcolor(watlington(16)[11:3], alpha = 0.7)
corrplot.mixed(cor(month), lower = "number", upper = "shade", upper.col = wat)
corrplot(cor(month), col = wat, cl.length = 21, 
  addCoef.col = "black", method = "shade")
par(opar)

备注

我们使用了前 5 个月,因为问题中没有以易于使用的形式提供数据,但它应该对所有 12 个月都有效。

Lines <- "          Jan         Feb          Mar          Apr          May
1 18.06474972   11.399055 -31.03085327  127.2022133 -3460.850586
2 51.03550959 461.5850525  95.19575119  243.0290451  -2083.35199
3 47.54027748 110.2497387 -74.04249191  546.8690033 -1276.771118
4 340.8937378 282.1457062  74.03128743  322.6983643 -203.3483124
5 247.5398369 30.00830674  370.5808411  416.0554199  121.7065811
6 399.5107269 922.6151428  439.3453064 -35.20425129 -1469.418518"
month <- read.table(text = Lines)