R语言相关性热力图

创建一个热力图(Heatmap)通常需要执行以下步骤:

  1. 准备数据:首先,您需要准备包含要绘制的相关性数据或其他数值数据的数据框。

  2. 计算相关性矩阵:如果您要绘制的是相关性热力图,可以使用cor()函数来计算相关性矩阵。如果您要绘制其他类型的热力图,您可以根据需要计算数据的矩阵。

  3. 绘制热力图:使用适当的绘图函数来创建热力图。在R中,常用的绘图包包括ggplot2heatmap等。以下是一个使用ggplot2绘制相关性热力图的示例流程和函数解释:

用代码创建一个皮尔逊相关性图,用来可视化示例数据集中各列之间的相关性。详细代码如下

# 导入所需的库
library(ggplot2)

# 创建示例数据框
data <- data.frame(
  SS_1 = c(0.03,2, 0.02, 0.03),
  TS_1 = c(0.22, 0.22, 0.23, 0.23),
  WS_1 = c(24.31, 13.52, 25.48, NA),
  SoAR_1= c(8.32, 10.91, 10.31, 8.75),
  SS_2 = c(0.02, 0.03, 0.01, 0.05),
  TS_2 = c(0.26, 0.15, 0.15, 0.21),
  WS_2 = c(21.09, 17.83, 18.69, NA),
  SoAR_2 = c(9.67, 5.61, 15.82, 4.59),
  SS_3 = c(0.02, 0.1, 0.02, 0.02),
  TS_3 = c(0.21, 0.21, 0.16, 0.23),
  WS_3 = c(17.98, 21.45, 19.05, NA),
  SoAR_3= c(7.88, 5.05, 7.56, 8.95),
  SS_4= c(0.01, 0.03, 0.02, 0.01),
  TS_4= c(0.16, 0.19, 0.21, 0.22),
  WS_4= c(19.15, 17.01, 20.12, NA),
  SoAR_4= c(19.53, 7.07, 7.72, 16.87)
)

# 计算相关性矩阵
cor_matrix <- cor(data, use = "pairwise.complete.obs")
#打印相关系数矩阵
#print(cor_matrix)
# 将下半部分的数值设置为NA,仅保留半角相关性矩阵
cor_matrix[lower.tri(cor_matrix)] <- NA

# 创建相关性热力图并添加数值,只显示上半角相关性矩阵
ggplot(data = as.data.frame(as.table(cor_matrix)), 
       aes(x = Var1, y = Var2)) +
  geom_tile(data = subset(as.data.frame(as.table(cor_matrix)), !is.na(Freq)), aes(fill = Freq)) +
  geom_tile(data = subset(as.data.frame(as.table(cor_matrix)), is.na(Freq)), fill = "white") +
  geom_text(aes(label = round(Freq, 2)), vjust = 1, size = 3, na.rm = TRUE) +
  scale_fill_gradient2(low = "blue", mid = "white", high = "red", midpoint = 0,
                       breaks = seq(-1, 1, by = 0.2)) +  # 设置划分区间的分割点
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 55, hjust = 1)) +
  labs(x = "注:图中1、2、3、4为充足灌溉(W1)、轻度亏缺(W2)、中度亏缺(W3)、重度亏缺(W4),
       SS为可滴定酸,TS为可溶性固形物,WS为可溶性糖,SoAR为糖酸比。",y="果实品质(Fruit quality)")+
  theme(legend.key.height = unit(1.9, "cm"))+
  geom_tile(data = subset(as.data.frame(as.table(cor_matrix)), is.na(Freq)), fill = "white", color = "black",linetype = "dashed")+  # 添加下半角网格线,颜色为黑色
  geom_tile(data = subset(as.data.frame(as.table(cor_matrix)), !is.na(Freq)), fill = NA, color = "black")  # 添加上半角的矩阵网格线


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lltanwh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值