Search code examples
pythonmatplotlibseabornfacet-grid

FacetGrid change titles


I am trying to create a FacetGrid in Seaborn

My code is currently:

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)

This gives my the Figure

My FacetGrid

Now, instead of "ActualExternal = 0.0" and "ActualExternal = 1.0", I would like the titles "Internal" and "External"

And, instead of "ActualDepth" I would like the xlabel to say "Percentage Depth"

Finally, I would like to add a ylabel of "Number of Defects".


Solution

  • You can access the axes of a FacetGrid (g = sns.FacetGrid(...)) via g.axes. With that you are free to use any matplotlib method you like to tweak the plot.

    Change titles:

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

    Change labels:

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

    Note that I prefer those above the FacetGrid's internal g.set_axis_labels and set_titles methods, because it makes it more obvious which axes is to be labelled.