Frage:
Zeichnen einer Heatmap mit einem Dendrogramm und einer Distanzmatrix in R.
Darren J. Fitzpatrick
2011-02-04 23:50:57 UTC
view on stackexchange narkive permalink

Ich habe ein Dendrogramm und eine Distanzmatrix. Ich möchte eine Heatmap berechnen - ohne die Distanzmatrix und das Clustering erneut durchzuführen.

Gibt es in R eine Funktion, die dies zulässt?

Drei antworten:
#1
+9
chl
2011-02-05 01:29:58 UTC
view on stackexchange narkive permalink

Ich kenne keine bestimmte Funktion dafür. Diejenigen, die ich verwendet habe, nehmen im Allgemeinen Rohdaten oder eine Distanzmatrix. Es wäre jedoch nicht sehr schwierig, bereits vorhandenen Code zu hacken, ohne mehr als das grundlegende R zu kennen. Sehen Sie sich den Quellcode für die Funktion cim () im Paket mixOmics an Zum Beispiel (ich wähle diesen, weil der Quellcode sehr einfach zu lesen ist; Sie finden andere Funktionen im Bioconductor -Projekt). Die interessanten Teile des Codes sind l. 92-113, wo sie das Ergebnis von HC ddc und um l zuweisen. 193-246, wo sie die Plotbereiche erstellt haben (Sie sollten die Werte Ihrer Distanzmatrix anstelle der Matte eingeben, wenn sie image () aufrufen). HTH

Bearbeiten

Eine kürzlich durchgeführte Google-Suche zu einem verwandten Thema führte mich zu dendrogramGrob () aus dem latticeExtra Paket. Angenommen, Sie haben bereits Ihr sortiertes Dendrogrammobjekt, können Sie die ersten Zeilen des Beispielcodes aus der Online-Hilfe überspringen und so etwas abrufen (hier mit dem Datensatz mtcars ):

enter image description here

#2
+5
JTT
2011-05-02 11:53:51 UTC
view on stackexchange narkive permalink

Angenommen, Sie haben auch die Rohdaten, können Sie die Funktion heatmap () verwenden. Es können ein oder zwei Dendrogramme als Eingabe verwendet werden, wenn Sie vermeiden möchten, die Entfernungen zu berechnen und die Objekte erneut zu gruppieren.

Simulieren wir zunächst einige Daten:

  set.seed (1) dat<-Matrix (ncol = 4, nrow = 10, data = rnorm (40))  

Dann gruppieren Sie die Zeilen und Spalten:

  rd<-dist (dat) rc<-hclust (rd) cd<-dist (t (dat)) cc<-hclust (cd)  

Danach haben wir

1 ) die Rohdaten (dat) 2) eine Distanzmatrix (rd) und ein Dendrogramm (rc) für Zeilen der Rohdatenmatrix 3) eine Distanzmatrix (cd) und ein Dendrogramm (cc) für Spalten der Rohdaten

Entfernungsmatrizen werden für die weiteren Schritte nicht benötigt, sondern die Rohdaten, für die das Clustering durchgeführt wurde, und die resultierenden Dendrogramme.

Mit den Rohdaten sind diese Dendrogramme kann als Eingabe für die Funktions-Heatmap () verwendet werden. Wenn sowohl Zeilen- als auch Spaltendendrogramme benötigt werden, verwenden Sie:

  Heatmap (dat, Rowv = as.dendrogram (rc), Colv = as.dendrogram (cc))  

Wenn nur ein Zeilen- oder Spaltendendrogramm benötigt wird, verwenden Sie NA als Eingabe für den Rowv- oder Colv-Parameter in heatmap ():

  # Dendrogramm nur für Zeilenheatmap (dat, Rowv = as) .dendrogramm (rc), Colv = NA) # Dendrogramm nur für Spaltenheatmap (dat, Rowv = NA, Colv = as.dendrogramm (cc))  
Das OP sagte ausdrücklich, dass er die Distanzmatrix und das Dendrogramm nicht erneut berechnen möchte, daher würde ich vorschlagen, diesen Punkt in Ihrer Antwort klarer zu machen.
#3
+1
Chris
2011-02-05 01:23:34 UTC
view on stackexchange narkive permalink

Sie könnten versuchen, in den Paketen maptree oder ape zu suchen. Was versuchst du zu tun?



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 2.0-Lizenz, unter der er vertrieben wird.
Loading...