簡體   English   中英

在 r 中為熱圖准備數據幀 ggplot2

[英]preparing data frame in r for heatmap with ggplot2

目前正在嘗試創建一些遺傳數據的熱圖。 這些列當前標記為 s1、s2、s3 等,但我也有一個 .txt 文件,該文件具有每個樣本的正確對應標簽。 我不確定我是否需要首先修改 csv 文件的基因表達水平,或者我是否可以將它們單獨傳輸到我正在嘗試准備的數據框,最終將其制作成熱圖。 我也不確定 dataframe 的格式應該是什么。 如果這很重要,我想使用 ggplot2 創建熱圖。

到目前為止,這是我的代碼:

library(ggplot2)
library(dplyr)
library(magrittr) 

nci <- read.csv('/Users/myname/Desktop/ML Extra Credit/nci.data.csv')
nci.label <-scan(url("https://web.stanford.edu/~hastie/ElemStatLearn/datasets/nci.label",what="")
                 
#Select certain columns (specific years)
mat <- matrix(rexp(200, rate=.1), ncol=20)
rownames(mat) <- paste0('gene',1:nrow(mat))
colnames(mat) <- paste0('sample',1:ncol(mat))
mat[1:5,1:5]

它輸出一個示例數據框,如下所示:

    sample1   sample2    sample3   sample4   sample5

gene1 32.278434 16.678512  0.4637713  1.016569  3.353944

gene2  8.719729 11.080337  1.5254223  2.392519  3.503191

gene3  2.199697 18.846487 13.6525699 34.963664  2.511097

gene4  5.860673  2.160185  3.5243884  6.785453  3.947606

gene5 16.363688 38.543575  5.6761373 10.142018 22.481752

任何幫助將不勝感激!!

您需要以“長”格式獲取 dataframe 以方便繪圖。 這就是所謂的整潔數據和 forms 是准備使用ggplot2繪制數據的基礎。

這里的一般想法是,您需要一列用於x值,一列用於y值,以及一列表示用於平鋪顏色的值。 有很多方法可以做到這一點(參見melt()pivot_longer() ...),但我喜歡使用tidyr::gather() 由於您使用的是行名,而不是基因列,因此我首先將其創建為數據集中的列。

library(dplyr)
library(tidyr)
library(ggplot2)

set.seed(1234)

# create matrix
mat <- matrix(rexp(200, rate=.1), ncol=20)
rownames(mat) <- paste0('gene',1:nrow(mat))
colnames(mat) <- paste0('sample',1:ncol(mat))
mat[1:5,1:5]

# convert to data.frame and gather
mat <- as.data.frame(mat)
mat$gene <- rownames(mat)
mat <- mat %>% gather(key='sample', value='value', -gene)

ggplot調用非常簡單。 我們將每一列分配給xyfill美學,然后使用geom_tile()創建實際的熱圖。

ggplot(mat, aes(sample, gene)) + geom_tile(aes(fill=value))

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM