Skip to main content
Practice

Multi-Plot Grids (FacetGrid, lmplot)

Seaborn lets you create multiple subplots based on categories, which makes it easier to compare patterns across groups.

Two tools are especially helpful for this: FacetGrid and lmplot.


FacetGrid Overview

A FacetGrid lays out a grid of subplots using the unique values of one or more categorical variables.

You can define:

  • rows: variable that splits plots vertically
  • cols: variable that splits plots horizontally
  • hue (optional): variable that colors data points

This helps you break a complex dataset into smaller and clearer views.

FacetGrid with Scatter Plots
import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")

g = sns.FacetGrid(tips, row="sex", col="time", hue="smoker", margin_titles=True)
g.map_dataframe(sns.scatterplot, x="total_bill", y="tip")
g.add_legend()
plt.show()
FacetGrid with Histograms
g = sns.FacetGrid(tips, col="day")
g.map_dataframe(sns.histplot, x="total_bill", bins=20)
plt.show()

lmplot Overview

lmplot combines a regression plot with a FacetGrid.

It shows the relationship between variables along with a fitted trend line, and it can split the data by category.

lmplot with Categories and Facets
sns.lmplot(
data=tips,
x="total_bill",
y="tip",
hue="sex",
col="time",
height=4,
scatter_kws={"alpha": 0.6}
)
plt.show()

When to Use Each

  • Use FacetGrid when you want a flexible grid and plan to map different plot functions (scatter, hist, KDE, bar).
  • Use lmplot when you want regression lines with optional faceting and coloring in one step.

Tips for Clear Multi-Plot Grids

  • Limit the number of facets: Too many categories can make the grid hard to read.
  • Keep axis ranges consistent: Shared scales make comparisons easier (sharex, sharey).
  • Add legends and titles: Use add_legend() and margin_titles=True for clarity.

Now explore these patterns step by step in the notebook on the right side of the screen.

Want to learn more?

Join CodeFriends Plus membership or enroll in a course to start your journey.