如何在 r 中创建相关热图(带有示例)
您可以使用以下基本语法在 R 中创建相关热图:
#calculate correlation between each pairwise combination of variables cor_df <- round(cor(df), 2) #melt the data frame melted_cormat <- melt(cor_df) #create correlation heatmap ggplot(data = melted_cormat, aes(x=Var1, y=Var2, fill=value)) + geom_tile() + geom_text(aes(Var2, Var1, label = value), size = 5 ) + scale_fill_gradient2(low = " blue ", high = " red ", limit = c(-1,1), name=" Correlation ") + theme(axis. title . x = element_blank(), axis. title . y = element_blank(), panel. background = element_blank())
以下示例展示了如何在实践中使用此语法。
示例:在 R 中创建相关热图
假设我们在 R 中有以下数据框,显示八个不同篮球运动员的各种统计数据:
#create data frame
df <- data. frame (points=c(22, 25, 30, 16, 14, 18, 29, 22),
assists=c(4, 4, 5, 7, 8, 6, 7, 12),
rebounds=c(10, 7, 7, 6, 8, 5, 4, 3),
blocks=c(12, 4, 4, 6, 5, 3, 8, 5))
#view data frame
df
points assists rebounds blocks
1 22 4 10 12
2 25 4 7 4
3 30 5 7 4
4 16 7 6 6
5 14 8 8 5
6 18 6 5 3
7 29 7 4 8
8 22 12 3 5
假设我们想要创建一个相关热图来可视化数据框中变量的每个成对组合之间的相关系数。
在创建相关热图之前,我们首先需要使用cor()计算每个变量之间的相关系数,然后使用包的Melt()函数reshape2将结果转换为可用格式:
library (reshape2) #calculate correlation coefficients, rounded to 2 decimal places cor_df <- round(cor(df), 2) #melt the data frame melted_cor <- melt(cor_df) #view head of melted data frame head(melted_cor) Var1 Var2 value 1 points points 1.00 2 assist points -0.27 3 rebound points -0.16 4 block points 0.10 5 assist points -0.27 6 assists assists 1.00
接下来,我们可以使用ggplot2包中的geom_tile()函数来创建相关热图:
library (ggplot2) #create correlation heatmap ggplot(data = melted_cor, aes(x=Var1, y=Var2, fill=value)) + geom_tile() + geom_text(aes(Var2, Var1, label = value), size = 5 ) + scale_fill_gradient2(low = " blue ", high = " red ", limit = c(-1,1), name=" Correlation ") + theme(axis. title . x = element_blank(), axis. title . y = element_blank(), panel. background = element_blank())
结果是相关热图,使我们能够可视化变量的每个成对组合之间的相关系数。
在这个特定的热图中,相关系数采用以下颜色:
- 如果接近-1 ,则为蓝色
- 如果它们接近0 ,则为白色
- 如果它们接近1 ,则为红色
您可以在scale_fill_gradient2()函数中随意使用您想要的低参数和高参数的任何颜色。
例如,您可以使用“红色”表示低值,使用“绿色”表示高值:
library (ggplot2) #create correlation heatmap ggplot(data = melted_cor, aes(x=Var1, y=Var2, fill=value)) + geom_tile() + geom_text(aes(Var2, Var1, label = value), size = 5 ) + scale_fill_gradient2(low = " red ", high = " green ", limit = c(-1,1), name=" Correlation ") + theme(axis. title . x = element_blank(), axis. title . y = element_blank(), panel. background = element_blank())
注意:如果您想更好地控制相关热图中的确切颜色,您还可以指定要使用的十六进制颜色代码。
其他资源
以下教程解释了如何在 ggplot2 中执行其他常见任务:
如何在ggplot2中旋转轴标签
如何在ggplot2中设置轴中断
如何在ggplot2中设置轴限制
如何更改ggplot2中的图例标签