2017-11-26 2 views
1

Ich erzeuge eine Heatmap aus einem Pandas Datenrahmen mit einem Code, der so auf meinem Apple Computer aussieht.Seaborn Heatmap Farben sind umgekehrt

import matplotlib.pyplot as plt 
import seaborn as sns 

fig, ax = plt.subplots(figsize=(14,14)) 
sns.set(font_scale=1.4) 
sns_plot = sns.heatmap(df, annot=True, linewidths=.5, fmt='g', ax=ax).set_yticklabels(ax.get_yticklabels(), rotation=0) 
ax.set_ylabel('Product') 
ax.set_xlabel('Manufacturer') 
ax.xaxis.set_ticks_position('top') 
ax.xaxis.set_label_position('top') 

fig.savefig('output.png') 

Und ich bekomme eine Heatmap wie folgt aussehen:

enter image description here

ich meinen Code dann mit einem ubuntu-Bild in einem Docker Behälter gegeben und ich installieren die gleiche Version von Seaborn. Der einzige Unterschied ist, dass ich brauche eine matplotlib Konfiguration hinzuzufügen, so dass TCL schreit nicht:

import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 
import seaborn as sns 

Und ich bekomme eine Heatmap, die so aussieht (ich verwende den gleichen Code und den gleichen Pandas Datenrahmen):

enter image description here

ich bin nicht in der Lage zu finden, warum der Farbverlauf invertiert und würde gerne hören, wenn Sie eine Idee haben.

Vielen Dank!

+0

Stellen Sie sicher, dass Sie in beiden Fällen die gleiche Seaborn-Version verwenden, da sich die Standardfarbkarte in letzter Zeit geändert hat. Es sieht ein bisschen seltsam aus, da die Farben in der Farbleiste nicht im Heatmap-Bild erscheinen (als ob sich die Skalierung geändert hätte). – mmagnuski

+0

oh, aber das gleiche gilt für das erste Bild - das ist, weil die Bilder beschnitten sind. – mmagnuski

+0

ja sorry die Bilder sind beschnitten – mandok

Antwort

1

Die Standard-Farbpalette wurde in 'rocket' für sequenzielle Daten mit 0,8 Freigabe von Seaborn geändert, siehe the release notes. Die Colormap sieht jetzt so aus:

Sie können immer das Argument cmap verwenden und angeben, welche Colormap Sie verwenden möchten.

+0

Vielen Dank für Ihre Antwort! Gibt es eine einfache Art zu sagen, dass die niedrigsten Werte die hellsten Farben bekommen, während die höchsten Werte die dunkelsten Farben bekommen? – mandok

+0

Wenn Sie eine Colormap umkehren möchten, können Sie '_r' an seinen Namen anhängen - im Fall von' 'rocket'' colormap würden Sie einfach tun: 'cmap =' rocket_r'' – mmagnuski