2017-05-11 4 views
0

Ich versuche, ein FacetGrid in Seaborn ist derzeitPython, Seaborn FacetGrid ändern Titel

Mein Code zu erstellen:

g = sns.FacetGrid(df_reduced, col="ActualExternal", margin_titles=True) 
bins = np.linspace(0, 100, 20) 
g.map(plt.hist, "ActualDepth", color="steelblue", bins=bins, width=4.5) 

Das gibt mir die Abbildung

My FacetGrid

Jetzt, anstelle von "ActualExternal = 0.0" und "ActualExternal = 1.0" möchte ich die Titel "Internal" und "External"

Und statt "ActualDepth" möchte ich das Xlabel sagen "Prozenttiefe"

Schließlich möchte ich ein Ylabel "Anzahl der Defekte" hinzufügen.

Ich habe Googeln versucht und habe ein paar Dinge ausprobiert, aber bisher keinen Erfolg. Können Sie mir bitte helfen?

Dank

Antwort

2

Sie die Achsen eines FacetGrid zugreifen können (g = sns.FacetGrid(...)) über g.axes. Damit steht es Ihnen frei, eine beliebige Matplotlib-Methode zu verwenden, um die Darstellung zu optimieren.

ändern Titel:

axes = g.axes.flatten() 
axes[0].set_title("Internal") 
axes[1].set_title("External") 

ändern Etiketten:

axes = g.axes.flatten() 
axes[0].set_ylabel("Number of Defects") 
for ax in axes: 
    ax.set_xlabel("Percentage Depth") 
+0

Danke, ich habe das versucht, aber ich bekomme einen Fehler 'AttributeError: 'numpy.darray' Objekt hat kein Attribut 'set_title'' Irgendeine Idee warum? – jlt199

+0

'g.axes' kann ein 2D-Array sein, so dass' g.axes [0] 'immer noch ein 1D-Array ist. Ich habe die Antwort aktualisiert; Dies sollte jetzt sicher sein, unabhängig von den Dimensionen. – ImportanceOfBeingErnest

+0

Funktioniert perfekt. Danke – jlt199

1

Obwohl Sie durch die Achsen und legen Sie die individuell Titel mit matplotlib Befehle laufen kann, ist es sauberer Seaborn zu gebrauchen eingebaute Werkzeuge, um den Titel zu kontrollieren. Zum Beispiel:

# Add a column of appropriate labels 
df_reduced['measure'] = df_reduced['ActualExternal'].replace({0: 'Internal', 
                   1: 'External'} 

g = sns.FacetGrid(df_reduced, col="measure", margin_titles=True) 
g.map(plt.hist, "ActualDepth", color="steelblue", bins=bins, width=4.5) 

# Adjust title and axis labels directly 
g.set_title("{col_name}") 
g.set_axis_labels(x_var="Percentage Depth", y_var="Number of Defects") 

Dies hat den Vorteil, nicht Modifikation benötigen, unabhängig davon, ob Sie 1D- oder 2D-Facetten haben.

Verwandte Themen