Sie haben also ungefähr fünf Fragen gestellt (5 +/- 3). Soweit Sie Ihre eigene Funktion rect.hclust schreiben, befindet sich die Quelle in %code% , wenn Sie sie betrachten möchten.
Ich habe selbst einen kurzen Blick darauf geworfen und bin nicht sicher, ob es das tut, was ich beim Lesen Ihrer Beschreibung dachte - es scheint, mehrere Rechtecke zu zeichnen, auch der %code% Selektor scheint hart codiert zu sein, um die Tags horizontal zu trennen (was nicht das ist, was Sie wollen und es gibt kein %code% ).
Ich komme zurück, aber in der Zwischenzeit könntest du (zusätzlich zur Quelle) versuchen, mehrere rect.hclust mit verschiedenen %code% -Farben und verschiedenen %code% -Werten zu machen, um zu sehen, ob ein Fehlermuster auftaucht.
Aktualisieren
Ich hatte auch nicht viel Glück dabei.
Ein möglicher Trick für das Clipping wäre, die Beschriftungen mit abschließenden Leerstellen zu füllen und dann die Kante Ihres Rechtecks leicht einzubringen (die Idee wäre, dass das Rechteck nur aus der Beschneidungszone kommt, aber die Enden überschrieben werden der Etiketten).
Eine andere Idee wäre, das Rechteck mit einer transluzenten (niedrige Alpha) Farbe zu füllen, die einen schattierten Bereich statt einer Begrenzungsbox bildet.
Ich habe dieses Dendrogramm mit den Funktionen %code% , %code% und %code% von R generiert.
Ich habe die Funktion %code% und eine lokale Funktion verwendet, um Blätter zu färben, was gut funktioniert.
Ich habe Ergebnisse aus einem statistischen Test, die anzeigen, ob eine Menge von Knoten ( zB der Cluster von " %code% " und " %code% " in der unteren rechten Ecke des Baumes) sind wichtig oder wichtig.
Ich habe auch eine lokale Funktion, die ich mit %code% verwenden kann, die den exakten Knoten in meinem Dendrogramm findet, der signifikante Blätter enthält.
Ich möchte entweder (dem Beispiel folgend):
Ich habe die folgende lokale Funktion (die Details der Bedingung "nodes-in-leafList-match-nodes-in-clusterList" sind nicht wichtig, heben aber signifikante Knoten hervor):
%Vor%In diesem %code% -Block habe ich versucht, %code% aufzurufen, aber das hat nicht funktioniert:
%Vor%In meinem idealen Beispiel wären die Kanten, die " %code% " und " %code% " verbinden, gestrichelt und von roter Farbe.
Ich habe auch versucht, %code% in diesem %code% Block zu verwenden:
%Vor%Aber das Ergebnis funktioniert nicht mit horizontalen Dendrogrammen ( d. d. Dendrogramme mit horizontalen Etiketten). Hier ist ein Beispiel (beachten Sie den roten Streifen in der unteren rechten Ecke). Irgendetwas stimmt nicht mit den Dimensionen von %code% , und ich weiß nicht, wie es funktioniert, um meine eigene Version schreiben zu können.
Ich freue mich, wenn Sie %code% oder %code% richtig arbeiten lassen oder mein eigenes %code% -Äquivalent schreiben können.
AKTUALISIEREN
Nachdem ich diese Frage gestellt habe, habe ich %code% verwendet, um den Funktionscode zu erhalten, der die Parameter berechnet und das Objekt %code% zeichnet. Ich schrieb eine benutzerdefinierte Version dieser Funktion, um horizontale und vertikale Blätter zu behandeln, und rufe sie mit %code% auf.
Es gibt jedoch einen Clipping-Effekt, der einen Teil von %code% entfernt. Bei horizontalen Blättern (Blätter, die auf der rechten Seite des Baums gezeichnet sind) verschwindet die rechte Kante von %code% oder ist dünner als die Rahmenbreite der anderen drei Seiten von %code% . Bei vertikalen Blättern (Blätter, die auf der Unterseite des Baums gezeichnet sind) leidet die unterste Kante von %code% unter dem gleichen Anzeigeproblem.
Was ich getan habe, um signifikante Cluster zu markieren, ist, die Breite von %code% so zu reduzieren, dass ich einen vertikalen roten Streifen zwischen den Spitzen der Clusterränder und den (horizontalen) Blattetiketten rendere.
Dies beseitigt das Clipping-Problem, bringt aber ein weiteres Problem mit sich, da der Abstand zwischen den Spitzen der Cluster-Kanten und den Blattetiketten nur sechs oder mehr Pixel breit ist, über die ich nicht viel Kontrolle habe. Dies begrenzt die Breite des vertikalen Streifens.
Das schlimmere Problem ist, dass die %code% -Koordinate, die angibt, wo der vertikale Streifen zwischen den beiden Elementen passen kann, sich auf der Breite des größeren Baums ( %code% ) ändert, was wiederum davon abhängt, wie der Baum ist Hierarchie wird am Ende strukturiert.
Ich schrieb eine "Korrektur" oder, besser gesagt, einen Hack, um diesen %code% Wert und die %code% Breite für horizontale Bäume anzupassen. Es funktioniert nicht immer gleich, aber für die Bäume, die ich mache, scheint es zu vermeiden, zu nah an (oder überlappende) Kanten und Beschriftungen zu kommen.
Letztlich wäre eine bessere Lösung, herauszufinden, wie %code% gezeichnet wird, so dass kein Clipping auftritt. Oder eine konsistente Methode zur Berechnung der spezifischen %code% -Position zwischen Baumkanten und Beschriftungen für einen bestimmten Baum, um den Streifen richtig zu zentrieren und zu dimensionieren.
Ich wäre auch sehr an einer Methode interessiert, Kanten mit Farben oder Linienstilen zu kommentieren.