Ich habe mit Python, Pandas und Seaborn gearbeitet, um eine Heatmap mit verschiedenen Colormaps / Spalten zu erhalten. Dank dieser Frage habe ich Folgendes getan :
Beispieldatenrahmen (sample.csv):
%Vor%Plotten Sie Heatmap mit Seaborn
%Vor%Dies erzeugt eine Heatmap mit verschiedenen Colormaps / Spalten (die Werte dienen nur zur Klärung des Problems):
Nun möchte ich das gleiche Diagramm mit dem sortierten Datenfeld wie folgt erstellen:
%Vor%Versuchen Sie, die ursprüngliche Farbe des Paares (Index, Spalte) beizubehalten, wie die folgende erwartete Entwurfsausgabe (Werte sind indikativ, was ich nur die Farben benötigen würde):
BEARBEITEN:
Einige Tippfehler wurden korrigiert, jetzt ist df der Datenrahmen, der die Arbeitsmatrix darstellt.
Sie könnten einmal über das Array iterieren und die Farben erhalten, die jedem Wert entsprechen, und sie in einem NxMx3-Array (Bild) speichern. Dann sortiere das Array und das Bild auf die gleiche Weise, z. Holen Sie die Sortierindizes aus dem ursprünglichen Array und wenden Sie sie auf das Bildfeld an. Dann können Sie das Bild mit plt.imshow
anzeigen
Sie können dann mit Matplotlib Labels, Ticks, etc. hinzufügen.
Das könnte so aussehen: Sie sollten zuerst ein NxMx3-Array erstellen, um die Farben zu speichern.
im = np.zeros((df.shape[0], df.shape[1], 3))
Sie können dann über jede Spalte iterieren und Ihren Wert von 0 bis 255 skalieren, z.
color_index = (value-min(column))/(max(column)-min(column)*255
dann können Sie
verwenden color = cmap(color_index)
im[col_index, row_index, :] = color
Wenn Sie über jede Spalte iteriert haben, werden alle Farben in im
Der resultierende Code wäre:
%Vor% Mit seaborn heatmap musst du nur die verschiedenen Farbkarten zur Verfügung stellen und Setzen Sie vmin
und vmax
unabhängig von der Reihenfolge. Eigentlich
vmin, vmax: schwimmt, optional
Werte zum Verankern der Colormap, andernfalls werden sie aus den Daten und anderen Schlüsselwortargumenten abgeleitet.
Dies bedeutet, dass Sie die Min / Max-Werte nicht angeben müssen, wenn Sie sie nicht außerhalb Ihrer Datenpunkte haben möchten.
Tags und Links python matplotlib pandas heatmap seaborn