Es ist möglich, erfordert aber etwas Hacking.
Sehen wir uns zuerst an, wie pheatmap
eine Heatmap zeichnet. Sie können dies überprüfen, indem Sie pheatmap
in die Konsole eingeben und durch die Ausgabe scrollen oder alternativ edit(pheatmap)
verwenden.
Sie werden feststellen, dass Farben mit
abgebildet werden %Vor% Die Funktion scale_colours
scheint eine interne Funktion des Pakets pheatmap
zu sein, aber wir können den Quellcode mit
Was gibt
%Vor% Jetzt müssen wir scale_vec_colours
überprüfen, das stellt sich heraus:
Im Wesentlichen verwendet pheatmap
cut
, um zu entscheiden, welche Farben verwendet werden sollen.
Lassen Sie uns versuchen, was cut
macht, wenn es NAs gibt:
Es gibt NA zurück! Also, hier ist dein Problem!
Nun, wie kommen wir damit klar?
Am einfachsten ist es, pheatmap
die Heatmap zeichnen zu lassen und dann die NA-Werte so zu überlagern, wie wir möchten.
Wenn Sie noch einmal auf die pheatmap
-Funktion schauen, sehen Sie, dass sie das grid
-Paket zum Plotten benutzt (siehe auch diese Frage: R - Wie füge ich pheatmap Linien und Text hinzu? )
Sie können also grid.rect
verwenden, um den NA-Positionen Rechtecke hinzuzufügen.
Was ich tun würde ist, die Koordinaten der Heatmap-Grenze durch Versuch und Irrtum zu finden, und dann von dort aus die Rechtecke zu zeichnen.
Zum Beispiel:
%Vor% Eine bessere Lösung wäre, den Code von pheatmap
mit der Funktion edit
zu hacken und ihn mit NAs zu behandeln, wie Sie es wünschen ...
Sie können die Zuweisung einer Farbe aktivieren, indem Sie die Entwicklerversion von pheatmap von github verwenden. Sie können dies mit Devtools tun:
%Vor%Jetzt können Sie den Parameter "na_col" in der Funktion pheatmap verwenden:
%Vor%(bearbeiten) Vergiss nicht, es danach zu laden. Sobald es installiert ist, können Sie es wie jedes andere installierte Paket behandeln.