2017-08-15 3 views
0

I erzeugen ein heatmap heatmap.2 des gplots Pakets mit:R - heatmap.2: Neuordnungs Zeilen und Spalten

library(gplots) 
abc <-read.csv(file="abc.txt", header=T, sep="\t", dec=".") 
abcm<-as.matrix(abc) 
def <-read.csv(file="def.txt", header=T, sep="\t", dec=".") 
defm<-as.matrix(def) 
mean <-read.csv(file="mean.txt", header=T, sep="\t", dec=".") 
meanm<-as.matrix(mean) 
distance.row = dist(as.matrix(def), method = "euclidean") 
cluster.row = hclust(distance.row, method = "average") 
distance.col = dist(t(as.matrix(abc)), method = "euclidean") 
cluster.col = hclust(distance.col, method = "average") 
my_palette <- colorRampPalette(c("red", "yellow", "green"))(n = 299) 

heatmap.2(meanm, trace="none", dendrogram="both", Rowv=as.dendrogram(cluster.row), Colv=as.dendrogram(cluster.col), margins = c(7,7), col=my_palette) 

mit zwei unterschiedlichen Clusterverfahren für jedes Dendrogramm.

heatmap

Jetzt möchte ich die Objekte neu zu ordnen, so dass die grünen Quadrate eine Diagonale bilden. Wie mache ich das?

EDIT: mein Abtastwerteingang hier

structure(c(1, 0.6798, 0.6604, 0.7101, 0.6771, 0.6725, 0.6696, 
0.6548, 0.676, 0.6811, 0.6798, 1, 0.656, 0.6763, 0.8163, 0.781, 
0.7811, 0.6503, 0.7811, 0.855, 0.6604, 0.656, 1, 0.6532, 0.6498, 
0.6459, 0.6455, 0.7532, 0.6521, 0.6536, 0.7101, 0.6763, 0.6532, 
1, 0.672, 0.669, 0.6669, 0.6517, 0.6748, 0.6786, 0.6771, 0.8163, 
0.6498, 0.672, 1, 0.7828, 0.7838, 0.6441, 0.7736, 0.8227, 0.6725, 
0.781, 0.6459, 0.669, 0.7828, 1, 0.8361, 0.6447, 0.7574, 0.7796, 
0.6696, 0.7811, 0.6455, 0.6669, 0.7838, 0.8361, 1, 0.638, 0.7566, 
0.7772, 0.6548, 0.6503, 0.7532, 0.6517, 0.6441, 0.6447, 0.638, 
1, 0.6563, 0.6459, 0.676, 0.7811, 0.6521, 0.6748, 0.7736, 0.7574, 
0.7566, 0.6563, 1, 0.7778, 0.6811, 0.855, 0.6536, 0.6786, 0.8227, 
0.7796, 0.7772, 0.6459, 0.7778, 1), .Dim = c(10L, 10L), .Dimnames = list(
    c("sp1", "sp2", "sp3", "sp4", "sp5", "sp6", "sp7", "sp8", 
    "sp9", "sp10"), c("sp1", "sp2", "sp3", "sp4", "sp5", "sp6", 
    "sp7", "sp8", "sp9", "sp10"))) 
+0

Können Sie Beispieldaten enthalten? Am einfachsten ist es, 'dput()' mit einer Teilmenge Ihrer Daten zu verwenden. –

+0

@LukeC sehe meine Bearbeitungen! – rororo

+0

Danke @ rororo- Ich denke, für die Vollständigkeit müssten Sie die 'cluster.row' und' cluster.col' einschließen, so dass Benutzer die Heatmap tatsächlich plotten konnten, wie Sie getan haben. Allerdings könnte ich Sie falsch verstehen - Sie möchten Ihre Zeilen und Spalten so umordnen, dass Sie eine Diagonale erhalten. Würde das dein Dendrogramm nicht brechen? Für sp 4, 1, 8 und 3 wäre es nicht unbedingt wichtig (einfach den Zweig umdrehen), aber für sp 9, 6 und 7 kann ich keine Dendrogrammkonfiguration sehen, die die Diagonale erlauben würde. Weitere Informationen finden Sie unter 'Rowv' und' Colv' Argumente für 'heatmap.2'. Wenn ich dich nicht verstehe, entschuldige ich mich! –

Antwort

1

Die Funktion reorder.dendrogram die Zweige dreht.

reorder(as.dendrogram(cluster.col), 10:1) 
reorder(as.dendrogram(cluster.row), 10:1) 

in

verwendet
heatmap.2(meanm, trace="none", dendrogram="both", 
Rowv=reorder(as.dendrogram(cluster.row), 10:1), 
Colv=reorder(as.dendrogram(cluster.col), 10:1), 
margins = c(7,7), breaks=breaks,col=hm.colors, na.color="white", 
main="mean(AAI+ANI)", xlab="AAI clustering", ylab="ANI clustering", srtCol=45)