首页 文章

如何创建一个热图函数,填充数据集中两个变量之间的相关性?

提问于
浏览
0

我正在尝试创建一个函数,该函数计算来自我所拥有的数据集的2列数据之间的相关系数,并针对每个列的组合重复这一点 .

然后我想让它绘制热图中的所有系数 .

This is an outline of the dataset and what I want to include in the heatmap.

如何编辑我的函数以便循环遍历数据集并能够计算所有列之间的相关系数并绘制热图中的值?我首先尝试创建一个全0的空数据框,然后我希望它填写所有值 .

master <- read.table("~/Desktop/Heatmap Project/master.txt", sep = "\t", header = T, stringsAsFactors = F)

vector_a <- master$Median_A
vector_b <- master$Median_B

heatmap_prep <- function(vector_a,vector_b){
    dummy <- as.data.frame(matrix(0, ncol=length(vector_b), nrow=length(vector_a))
    for (i in 1:length(vector_a)){
        first_number <- vector_a[i]
        for(j in 1:length(vector_b)){
            second_number <- vector_b[j]
            result <- cor(vector_a,vector_b)
            dummy [i,j] <- result

        }
    }
    return(dummy)
}

heatmap_data_matrix <- as.matrix(heatmap_prep(vector_a,vector_b))

#Create heatmap:
library(stats)
library(gplots)
library(RColorBrewer)
heatmap(heatmap_data_matrix,Colv = NA, Rowv=NA, revC=T, scale='none', xlab= "B", ylab= "A", main = "Heatmap", col = rev(brewer.pal(11,"RdBu")))

非常感谢!

1 回答

  • 0

    以下代码应提供您提供的最小工作示例 .

    df <- data.frame("A" = c(12,13,15),
                     "B" = c(15,34,15),
                     "C" = c(16,34,56),
                     "D" = c(455,55,45),
                     "E" = c(78,67,65),
                     "F" = c(67,67,56),
                     "G" = c(67,45,64),
                     "H" = c(56,54,56),
                     "I" = c(56,89,90))
    
    library(reshape2)
    melted_cor <- melt(cor(df))
    library(ggplot2)
    ggplot(data = melted_cor, aes(x=X1, y=X2, fill=value)) + 
      geom_tile()
    

    tile plot

    在这里它更详细地解释:http://www.sthda.com/english/wiki/ggplot2-quick-correlation-matrix-heatmap-r-software-and-data-visualization

相关问题