簡體   English   中英

向ggplot2熱圖添加樹狀圖

[英]Adding a Dendrogram to a ggplot2 Heatmap

新的R用戶在這里。 我正在嘗試向使用ggplot2創建的熱圖添加樹狀圖。 我怎樣才能做到這一點? 我已將代碼添加到下面的熱點圖中。

#Mtcars using ggplots and reshape2 
install.packages("ggplot2")
library(ggplot2)
intall.packages("reshape2")
library(reshape2)
data(mtcars)
Cars <- mtcars[c(1:7)] #subset to 6 genres

cor(Cars) # 6x6 cor matrix

#ggplot likes the data 'melted' one value per row
m <-melt(cor(Cars)) 
p <- ggplot(data=m, aes(x=Var1, y=Var2, fill=value)) + geom_tile()
p

#set up a coloring scheme using colorRampPalette
red=rgb(1,0,0); green=rgb(0,1,0); blue=rgb(0,0,1); black=rgb(0,0,0)
RtoBrange<-colorRampPalette(c(red, black ) )
BtoGrange<-colorRampPalette(c(black, green) ) 

p <- p + scale_fill_gradient2(low=RtoBrange(100), mid="black",           high=BtoGrange(100))
p

謝謝你的幫助,

夏洛特

這有點棘手,因為並不是所有的東西都已經准備好,但這是我在熱圖上開始的工作的目標。 如果您對此感興趣,以便使用圖來創建具有樹狀圖的交互式熱圖,則應該查看heatmaply小插圖

如果您對靜態熱圖感興趣,我相信現有的軟件包已經做得很好,因此重新發明這個輪子可能不值得。 但是,如果這仍然是您想要執行的操作,請按照以下主要步驟操作:

  1. 產生樹狀圖對象
  2. 在ggplot2中繪制樹狀圖對象
  3. 以尊重行(或樹狀圖中的列)順序的方式創建熱圖
  4. 合並對象。

步驟1可以使用hclustas.dendrogram ,步驟2需要[as.ggdend][2][as.ggdend][2]函數。 第3步可以使用heatmaply :: heatmapr + heatmaply ::: ggplot_heatmap(目前處於隱藏狀態,但將來會在此類情況下公開)來完成。 第4步很棘手,到目前為止,由於元素的比例不好,我無法使其“足夠好”地工作。

我將其包裝到新的ggheatmap函數中,然后將其上傳到github上的heatmaply中 但這需要更多的工作,因此我願意提出請求。 同時,以下是操作方法:

devtools::install_github("ropensci/plotly") # you will probably benefit from the latest version of plotly
devtools::install_github('talgalili/heatmaply')

library(heatmaply)
x <- heatmapr(iris[,-5], scale = "column", colors = "Blues")
ggheatmap(x)

輸出看起來像這樣:

在此處輸入圖片說明

由於我正在使用GGally::ggmatrix我似乎無法控制每個對象的比例。 在其他方面可能還有更多工作要做(例如處理標簽的布局,在側面添加顏色圖例等)。

使用gplots包( https://cran.r-project.org/web/packages/gplots/gplots.pdf )中的heatmap.2函數,該函數會自動向您的熱圖添加樹狀圖。 使用您的示例:

install.packages("gplots")
library(gplots)

data(mtcars)
Cars <- mtcars[c(1:7)]

mycolors <- colorRampPalette(c("red", "black", "green"))
heatmap.2(cor(Cars), trace = "none", col = mycolors)

或嘗試使用heatmap3函數:

library(heatmap3)
Cars <- mtcars[c(1:7)]
heatmap3(cor(Cars), scale = "none", sym = T)

在此處輸入圖片說明

暫無
暫無

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

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