2015-03-17 5 views
8

Ich interessiere mich für die Seaborn Joint Plot für die Visualisierung der Korrelation zwischen zwei numpy Arrays. Ich mag die visuelle Unterscheidung, die der Typ = hex-Parameter gibt, aber ich würde auch gerne die tatsächliche Anzahl, die verschiedene Farben entsprechen, wissen. Weiß jemand, wie man diese Legende auf die Seite oder sogar auf die Handlung bringt? Ich habe versucht, die Dokumentation zu betrachten und konnte sie nicht finden.Die Legende im Seaborn-Jointplot erhalten

Danke!

+0

Ich habe auch danach gesucht, es scheint, dass sie es noch nicht implementiert haben. Sagen Sie, wenn Sie eine Lösung finden. – LearnOPhile

+0

Sie sollten 'plt.hexbin' direkt verwenden und dann eine Farbleiste hinzufügen (was ich unter" plt.colorbar "mit" legende "meine. – mwaskom

Antwort

10

Sie müssen es manuell tun, indem Sie eine neue Achse mit add_axes machen und dann den Namen der Axt passieren zu plt.colorbar()

import numpy as np 
import seaborn as sns 
x = np.random.normal(0.0,1.0,1000) 
y = np.random.normal(0.0,1.0,1000) 
hexplot = sns.jointplot(x, y, kind="hex") 
sns.plt.subplots_adjust(left=0.2, right=0.8, top=0.8, bottom=0.2) # shrink fig so cbar is visible 
cax = hexplot.fig.add_axes([.85, .25, .05, .4]) # x, y, width, height 
sns.plt.colorbar(cax=cax) 

Seaborn hexplot with colorbar

Quellen: Ich habe fast, nachdem ich read a dev say, dass die

"Arbeit/Nutzen-Verhältnis [Farbbalken zu implementieren] ist zu hoch"

aber dann fand ich schließlich diese Lösung in another issue.

+0

Das scheint bei mir nicht zu funktionieren. Weißt du was? Versionen sind (waren) Sie für diese Verwendung? – ryanjdillon

+1

@ryanjdillon Ich aktualisierte meine Antwort mit einem vollständigen Arbeitsbeispiel.Ihr Problem war wahrscheinlich, dass die Farbleiste wurde rechts von der Leinwand geplottet, so dass ich eine subplots_adjust() -Zeile hinzugefügt Umgehen Sie das Problem. (FYI Tight_layout ist nicht kompatibel mit diesem Axes-Objekt, so dass es keine Option ist) – crypdick

+0

Fantastisch. Vielen Dank für solch eine schnelle Antwort! Ich werde es am Montag geben. – ryanjdillon