簡體   English   中英

如何在R中使用ggplot2或其他方式在矩陣上繪制帶有數字的矩陣? 數字是vcf文件中的snp計數

[英]How to plot a matrix with numbers in the matrix colored using ggplot2 or other ways in R? The numbers are the snp count from vcf file

我有一個像這樣的矩陣:

Gene      BRCA         THYM         TGHJ
ACC         23          21           7
XTG         12          13           9
CFG         45          4            8

我想以矩陣的形式繪制此圖表,並根據其計數對數字進行着色; 例如,最高的數字用“紅色”上色,然后顏色的強度隨着數量的減少而逐漸減小,因此在此45中,“紅色”上色,而4則用非常淺的顏色上色。 請讓我知道是否清楚。

我希望使用ggplot2繪制此矩陣,但也非常歡迎R中的其他方式。 像這樣的矩陣:

在此處輸入圖片說明

嘗試這個:

library(dplyr)
library(ggplot2)
df <- data.frame( Gene= c("ACC", "XTG", "CFG"), 
                      BRCA= c(23,12,45), 
                      THYM= c(21,13,4), 
                      TGHJ= c(7,9,8))  
mdf <- gather(df, -Gene, key="key", value="count")
ggplot(mdf, aes(x=Gene, y=key, fill=count, label=count))+
      geom_tile()+
      geom_text()+
      scale_fill_gradient(high="red2", low="white")

在此處輸入圖片說明

由於您的數據似乎是生物學的,因此我建議使用熱圖函數,該函數在一些出版物中也使用過。

library(gplots)
heatmap.2(as.matrix(df[-1]),
          scale = "none",
          trace = "none", 
          labRow = as.character(df$Gene),
          cexRow=0.9, cexCol = 0.9, 
          cellnote=as.matrix(df[-1]),
          notecol="black",
          notecex = 2)

在此處輸入圖片說明

還嘗試通過scale = c("none","row", "column")或通過dendrogram = c("both","row","column","none")其他排序來縮放數據。 您可以嘗試更改顏色col= colorpanel(10, low = "white", mid = "yellow", high = "red")

您可以使用pheatmap包。

library(pheatmap)

示例數據集。

df <- data.frame(Gene= c("ACC", "XTG", "CFG"), 
              BRCA= c(23,12,45), 
              THYM= c(21,13,4), 
              TGHJ= c(7,9,8))  

准備要繪制的數據。

rownames(df) <- df[,1]
m <- as.matrix(df[,-1])

情節。

pheatmap(m, display_numbers=T, show_colnames=T, cluster_rows=F, cluster_cols=F)

在此處輸入圖片說明

暫無
暫無

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

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