Ich möchte eine Heatmap aus einem All-vs-all-Vergleich generieren. Ich habe die Daten bereits auf 0-1 skaliert. Allerdings habe ich die Werte nur für die Vergleiche auf eine Art und nicht für die Vergleiche zwischen derselben Gruppe (die immer 1 ist), d. H. Ich habe die halbe Matrix und vermisse die andere Hälfte und die Diagonale. Was ist ein guter Weg, um es in eine Form zu bringen, die ggplot2 für die Heatmap verwenden kann? Erweitern Sie den Datenrahmen zum Zeichnen der Heatmap in ggplot2
Dies ist ein Beispiel für die Daten, die ich habe:
A B value
T1 T2 0.347
T1 T3 0.669
T2 T3 0.214
ich die folgenden Voraussetzungen ist das, was ich für ggplot benötigen (oder vielleicht auch nicht, dass ich tun, wenn ggplot es irgendwie generieren?):
A B value
T1 T2 0.347
T1 T3 0.669
T2 T3 0.214
T2 T1 0.347
T3 T1 0.669
T3 T2 0.214
T1 T1 1
T2 T2 1
T3 T3 1
Dann würde ich laufen
sorted<-data[order(data$A, data$B), ]
ggplot(sorted, aes(A, B)) +
geom_tile(aes(fill = value), colour = "white") +
scale_fill_gradient(low = "black", high = "red") +
ich diese gelöst haben, aber in (was ich nehme an ist) eine wirklich schlechte Art und Weise invo loving für Schleifen. Es muss einen besseren Weg geben, um vom ersten Datenrahmen zum zweiten zu gelangen!
Prost
Dank! Das ist viel besser als meine Version. Bei R dreht sich alles um das Subsetting und Kombinieren, so scheint es ... – ShellfishGene