您好,登錄后才能下訂單哦!
怎樣用R語言ggplot2+ggtree+aplot畫氣泡圖組合聚類樹圖,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
R語言ggplot2畫氣泡圖(dotplot)展示基因表達量,今天的內容介紹如何在氣泡圖和左側和上方添加聚類樹圖,今天的內容主要參考 aplot包:讓你畫出更復雜的圖
今天重復的內容是論文中的figure2f
按照論文提供的代碼得到了畫圖用到的數據,部分數據如下
但是用他提供的畫圖代碼沒有能夠畫出圖來。因為他用到了一個
dot_plot()
函數,沒有找到這個函數是怎么來的。既然已經拿到了數據,就用ggplot2自己來畫吧
data.final<-read.csv("NM/figure2f.csv",header=T,check.names=F)
head(data.final)
library(ggplot2)
ggplot(data.final,aes(x=features.plot,y=id))+
geom_point(aes(size=`Percent expressed`,
color=`Average expression`))+
theme_bw()+
theme(panel.grid = element_blank(),
axis.text.x=element_text(angle=90,hjust = 1,vjust=0.5))+
scale_color_gradient(low="lightgrey",high="blue")+
labs(x=NULL,y=NULL)+
guides(size=guide_legend(order=3))
df<-data.final[,c(1,2,4)]
df1<-reshape2::dcast(df,id~features.plot,value.var = "Average expression")
rownames(df1)<-df1$id
df1.1<-df1[,2:22]
df1.1.clust<-hclust(dist(df1.1))
df2.1.clust<-hclust(dist(df2.1))
library(ggtree)
p2<-ggtree(df1.1.clust)
p2+
geom_tiplab()+
xlim(NA,7)
library(ggplot2)
p1<-ggplot(data.final,aes(x=features.plot,y=id))+
geom_point(aes(size=`Percent expressed`,
color=`Average expression`))+
theme_bw()+
theme(panel.grid = element_blank(),
axis.text.x=element_text(angle=90,hjust = 1,vjust=0.5))+
scale_color_gradient(low="lightgrey",high="blue")+
labs(x=NULL,y=NULL)+
guides(size=guide_legend(order=3))
library(aplot)
p1%>%
insert_left(p2,width = 0.2)
df2<-reshape2::dcast(df,features.plot~id,value.var = "Average expression")
rownames(df2)<-df2$features.plot
df2.1<-df2[,2:15]
df2.1.clust<-hclust(dist(df2.1))
p3<-ggtree(df2.1.clust)+
#geom_tiplab(angle=90)+
#theme_tree2()+
layout_dendrogram()
p3
p1%>%
insert_left(p2,width = 0.2)%>%
insert_top(p3,height = 0.2)
這里多了一個知識點是ggtree作圖默認開口樹的方向是向右,如果需要把開口改成向下,需要加上layout_dendrogram()
函數
最終的結果如下
這里和論文中的圖有些不一致,可能是聚類算法的原因;ggtree有一個默認的從上到下排序,比如左側的樹現在第一個是H6,第二個是H5,如果想把H5放到第一個也是可以實現的,可以參考之前的推文 R語言ggtree按照指定的節點旋轉樹。
關于怎樣用R語言ggplot2+ggtree+aplot畫氣泡圖組合聚類樹圖問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。