如何在R中重塑成两两匹配的矩阵并创建相关热图? [英] How to reshape a pairwise comaprison into matrix and create a correlation heatmap in R?
本文介绍了如何在R中重塑成两两匹配的矩阵并创建相关热图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望有人能帮我这个忙。
我有这个数据帧,它是dunnTest()
的输出,它包含成对比较和p值。dunnTest()
的示例输出如下所示。我尝试做的是将数据帧重塑为矩阵,并创建热图曲线图或关联曲线图平铺图,以可视化哪些组彼此之间有显著差异。输出应如下图所示。但是,块内的数据不是相关值,而是dunnTest()
我试图完成的问题与此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屋!
查看全文