如何关联数据框上的所有列并构建热图?
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)
显示其他可能性。
如题中,第二个情节:
- 使用 pals 包作为调色板(另一种可能是 RColorBrewer),+1 使用栗色,-1 使用浅蓝色,
- 将相关性的数值放在每个图块上
但您可以根据需要更改配色方案 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)
我有一个数据框,其中我的测量值按月份的天数分隔,我想在月份之间建立一个相关矩阵(热图),如下例所示:
感谢您的帮助!我的数据头是:
> 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)
显示其他可能性。
如题中,第二个情节:
- 使用 pals 包作为调色板(另一种可能是 RColorBrewer),+1 使用栗色,-1 使用浅蓝色,
- 将相关性的数值放在每个图块上
但您可以根据需要更改配色方案 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)