![](/img/trans.png)
[英]Controlling the shared legend when adding a ggplot dendrogram plot to a plotly heatmap
[英]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可以使用hclust
和as.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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.