Skip to content

Distribution Plots (displot, histplot)

Distribution plots answer:

  • What values are most common?
  • Is the data skewed?
  • Are there outliers?
  • Do groups behave differently?
diagram How histplot builds a histogram mermaid
Values are sorted into equal-width bins, counted, then drawn as bars — with an optional KDE curve laid on top.
histplot
import seaborn as sns
import matplotlib.pyplot as plt
 
values = [55, 60, 62, 63, 65, 67, 70, 72, 76, 80, 81, 85, 90, 92, 95]
 
plt.figure(figsize=(7, 4))
sns.histplot(values, bins=8, kde=False)
plt.title("Histogram")
plt.xlabel("Value")
plt.ylabel("Count")
plt.tight_layout()
plt.show()
histplot + kde
import seaborn as sns
import matplotlib.pyplot as plt
 
plt.figure(figsize=(7, 4))
sns.histplot(values, bins=8, kde=True)
plt.title("Histogram + KDE")
plt.tight_layout()
plt.show()

Bars count how many points land in each bin. The smooth curve is a KDE — an estimate of the underlying probability density that doesn’t depend on where the bin edges happen to fall:

sketch Histogram bars with a KDE curve p5.js
Amber bars are the binned counts; the blue curve is the smooth density estimate drawn over them.

displot can create more complex plots and handles facets.

displot
import seaborn as sns
 
# Seaborn includes sample datasets
 
tips = sns.load_dataset("tips")
 
sns.displot(data=tips, x="total_bill", bins=20, kde=True)
Compare groups
import seaborn as sns
import matplotlib.pyplot as plt
 
tips = sns.load_dataset("tips")
 
plt.figure(figsize=(7, 4))
sns.histplot(data=tips, x="total_bill", hue="sex", bins=20, kde=True, element="step")
plt.title("Total bill distribution by sex")
plt.tight_layout()
plt.show()
  • Use the same bin settings when comparing groups.
  • KDE is a smooth estimate; it can hide small details.
  • For heavy outliers, consider log scaling.

Continue to Kernel Density Estimation (KDE) to look at the smooth curve on its own, and learn how bandwidth controls its shape.

pch.coffeeTagline

pch.coffeeCta

pch.feedbackHeading

pch.feedbackSubheading