Diagonale Etikettenausrichtung auf der x-Achse in Heatmap (s)

Erstellen von heatmaps in R hat ein Thema viele Beiträge, Diskussionen und Iterationen. Mein Hauptproblem ist, dass es schwierig zu kombinieren visuelle Flexibilität von Lösungen im Gitter levelplot() oder einfache Grafiken image(), mit müheloser clustering von basic heatmap(), pheatmap ist pheatmap() oder gplots' heatmap.2(). Es ist ein winziges detail, das ich ändern wollen - Diagonale Ausrichtung der Etiketten auf der x-Achse. Lassen Sie mich Ihnen zeigen, dass mein Punkt im code.

#example data
d <- matrix(rnorm(25), 5, 5)
colnames(d) = paste("bip", 1:5, sep = "")
rownames(d) = paste("blob", 1:5, sep = "")

Können Sie ändern Sie die Ausrichtung in der Diagonale leicht mit levelplot():

require(lattice)
levelplot(d, scale=list(x=list(rot=45)))

Diagonale Etikettenausrichtung auf der x-Achse in Heatmap (s)

aber unter Anwendung des clustering scheint Schmerzen. So auch mit anderen visuellen Optionen wie das hinzufügen von Rahmen um heatmap-Zellen.

Nun, die Verlagerung der tatsächlichen heatmap() Verwandte Funktionen, clustering und alle grundlegenden visuals sind super-einfach - fast kein Abgleich erforderlich:

heatmap(d)

Diagonale Etikettenausrichtung auf der x-Achse in Heatmap (s)

und so ist hier:

require(gplots)
heatmap.2(d, key=F)

Diagonale Etikettenausrichtung auf der x-Achse in Heatmap (s)

und schließlich, mein Favorit:

require(pheatmap)
pheatmap(d) 

Diagonale Etikettenausrichtung auf der x-Achse in Heatmap (s)

Aber alle diese haben keine option zum drehen der Beschriftungen. Handbuch für pheatmap deutet darauf hin, dass ich verwenden können grid.text zu custom-orient-Etiketten. Was für eine Freude es ist - vor allem, wenn clustering und ändern die Reihenfolge der angezeigten labels. Es sei denn, ich bin hier etwas fehlt...

Schließlich, es ist ein guter Alter image(). Ich kann es drehen Etiketten, im Allgemeinen ist es der am meisten anpassbare Lösung, aber keine Cluster-option.

image(1:nrow(d),1:ncol(d), d, axes=F, ylab="", xlab="")
text(1:ncol(d), 0, srt = 45, labels = rownames(d), xpd = TRUE)
axis(1, label=F)
axis(2, 1:nrow(d), colnames(d), las=1)

Diagonale Etikettenausrichtung auf der x-Achse in Heatmap (s)

Also, was soll ich tun, um meine ideale, schnelle heatmap, Cluster und Orientierung und visueller Funktionen hacking? Mein bestes Gebot ändern heatmap() oder pheatmap() irgendwie, weil diese zwei scheinen besonders vielseitig in der Einstellung. Aber alle Lösungen willkommen.

Kommentar zu dem Problem
Basis Grafiken nicht zulassen, dass Ihre Steuern der Drehung von hilfsstrichbeschriftungen für beliebige Winkel --- somit haben Sie die text "hack", dass Sie zeigen, in den letzten image - Beispiel. Ich würde wohl passieren xaxt = FALSE zu heatmap - Anruf und fügen Sie dann die Achse ohne Beschriftungen, und fügen Sie dann die Etiketten mit text, wie bei image. Kommentarautor: Gavin Simpson
@GavinSimpson Das problem bei diesem Ansatz ist, dass Sie müssen manuell festlegen, die Reihenfolge der Beschriftungen auf der x-Achse, wenn Sie clustering. Möglich, aber ein bisschen schmerzhaft. Trotzdem, danke für den Hinweis für mich, dass heatmap() ist bauen mit base Grafik dann lieber grid (ich dachte, es war raster wie pheatmap()). Kommentarautor: Geek On Acid
Gibt es eine Lösung, dass ich etwas arbeiten, ich bin einfach nur zu schreiben als eine Antwort. Es war ein wenig komplizierter, als ich dachte. Lösung kommt demnächst... Kommentarautor: Gavin Simpson
+1 für eine unterhaltsame Lektüre, als auch eine gute Frage. Kommentarautor: Simon O'Hanlon

InformationsquelleAutor der Frage Geek On Acid | 2013-03-19

Schreibe einen Kommentar