2017-07-30 27 views
0

kmeans(15クラスタ)によってクラスタ化された行を持つggplotヒートマップがあります。クラスタの凡例をggplotヒートマップに追加

MotifPresence.kmeans = kmeans(MotifPresence, 15) 
class.promoter = MotifPresence.kmeans$cluster 
MotifPresence.kmeans.ordered = MotifPresence[order(class.promoter), MPbindist.hclust$order] 
x=colnames(MotifPresence)[MPbindist.hclust$order] 
y=rownames(MotifPresence) 
data <- expand.grid(X=x, Y=y) 

data$Z <- as.vector(t((MotifPresence.kmeans.ordered))) 

ggplot(data, aes(X, Y, z= Z)) + geom_tile(aes(fill = Z)) + 
theme(axis.text.x = element_text(angle = 45, hjust = 1), 
    axis.text.y = element_blank(), axis.ticks.y=element_blank())+ 
scale_fill_gradient(name = "Score", low = "white", high = "darkgreen") + 
ylab("") +xlab("") 

このヒートマップにマークを付けて、このクラスター間の境界を表示するにはどうすればよいですか?おそらく、水平線または追加の列は、各クラスターごとに異なる色ですか?

heatmap with clusters

答えて

0

は答えが見つかりました:

class.size = MotifPresence.kmeans$size 
levels = cumsum(class.size)+0.5 
my.lines<-data.frame(x=c(.5), y=c(levels), 
       xend=c(17.5), yend=c(levels)) 
ggplot(data, aes(X, Y, z= Z)) + geom_tile(aes(fill = Z)) + 
theme(axis.text.x = element_text(angle = 45, hjust = 1), 
    axis.text.y = element_blank(), axis.ticks.y=element_blank())+ 
scale_fill_gradient(name = "Score", low = "white", high = "darkgreen") + 
ylab("") +xlab("") + 
geom_segment(data=my.lines, aes(x,y,xend=xend, yend=yend), size=0.1, inherit.aes=F) 

enter image description here

関連する問題