Ich habe viele Fragen über Heatmap auf der ganzen Site und in den Paketen durchsucht, aber ich habe immer noch ein Problem.
Ich habe Daten geclustert (kmeans / EM / DBscan ..), und ich möchte eine Heatmap erstellen, indem ich den gleichen Cluster gruppiere. Ich möchte, dass ähnliche Farbmuster in der Heatmap gruppiert werden, also sieht es im Allgemeinen wie eine Blockdiagonale aus.
Ich habe versucht, die Daten nach der Cluster-Nummer zu ordnen und anzuzeigen,
k = kmeans(data, 3)
d = data.frame(data)
d = data.frame(d, k$cluster)
d = d[order(d$k.cluster),]
heatmap(as.matrix(d))
, aber es ist immer noch nicht sortiert und sieht folgendermaßen aus: Sie sollten Rowv
und Colv
auf NA
setzen, wenn Sie die Dendrogramme und die nachfolgende Bestellung nicht möchten. BTW, Du solltest auch von der Skalierung absetzen. Mit dem df von Andrie:
Tatsächlich basiert diese ganze Heatmap auf image()
. Sie können mit image
weghacken, um ein Plot genau so zu erstellen, wie Sie es möchten. Heatmap verwendet intern layout (), so dass es schwierig ist, die Ränder zu setzen. Mit Bild könnte man zB:
Um ein Diagramm zu erzeugen, das seitlich weniger Ränder hat. Sie können auch Achsen, Farben, ... manipulieren. Sie sollten sich unbedingt das RColorBrewer
-Paket ansehen
(Diese benutzerdefinierte Funktion basiert auf der internen Darstellung, die von heatmap btw verwendet wird, vereinfacht für die Illustration und um das gesamte Dendrogramm loszuwerden)