如何在R中重塑成两两匹配的矩阵并创建相关热图? [英] How to reshape a pairwise comaprison into matrix and create a correlation heatmap in R?

查看:20
本文介绍了如何在R中重塑成两两匹配的矩阵并创建相关热图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望有人能帮我这个忙。

我有这个数据帧,它是dunnTest()的输出,它包含成对比较和p值。dunnTest()的示例输出如下所示。我尝试做的是将数据帧重塑为矩阵,并创建热图曲线图或关联曲线图平铺图,以可视化哪些组彼此之间有显著差异。输出应如下图所示。但是,块内的数据不是相关值,而是dunnTest()

中的p值

我试图完成的问题与此link中发布的问题类似,但没有给出任何答案。我希望这一次有人能回答这样的问题。

我尝试了data.matrix(),但它没有根据";比较";列正确转换数据。

sorted <- 
    tibble::tribble(
      ~Comparison, ~Z, ~P.adj,
      "A1 - B1",    0.225445,     0.854086,
      "A1 - B2",    0.45513,     0.000235,
      "A1- B3",    0.32555,     0.221551,
       "B1 - B2",   0.44544,       0.0000552,
       "B2 - B3",    0.22511,      0.0000112)

推荐答案

如果我理解正确,这可能对您有帮助

library(tidyverse)

数据

sorted <- 
  tibble::tribble(
    ~Comparison, ~Z, ~P.adj,
    "A1 - B1",    0.225445,     0.854086,
    "A1 - B2",    0.45513,     0.000235,
    "A1- B3",    0.32555,     0.221551,
    "B1 - B2",   0.44544,       0.0000552,
    "B2 - B3",    0.22511,      0.0000112)

x <- c("A1","B1","B2","B3")

代码

sorted %>% 
  #Separate variable Comparison in two columns
  separate(col = Comparison,into = c("var1","var2")) %>% 
  #Create temporary data.frame 
  {. ->> temp} %>% 
  #Stack temporary data.frame so we have both A1-B1 and B1-A1
  bind_rows(
    temp %>%
      rename(var1 = var2,var2 = var1)
  ) %>% 
  #Join with a combination of all levels to make a "complete matrix"
  full_join(
    expand_grid(var1 = x,var2 = x)
  ) %>% 
  mutate(
    #Rounding p-value
    P.adj = round(P.adj,4),
    #Creating a variable just for the text inside the tile, with a condition
    p_lbl = if_else(P.adj < 0.05,paste0(P.adj,"*"),as.character(P.adj))) %>% 
  #Using variable P.adj as colour 
  ggplot(aes(x = var1,y = var2,fill = P.adj))+
  geom_tile(col = "black")+
  #Optional pallette 
  scale_fill_viridis_c()+
  # Add p-values as text inside the tiles
  geom_text(aes(label = p_lbl), fontface = "bold",size = 5)

绘图

这篇关于如何在R中重塑成两两匹配的矩阵并创建相关热图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆