- Histograms generated by seaborn.histplotandseaborn.displotdo not match.
- Default plot for sns.displotiskind='hist'
 
- Tested with python3.8.11,seaborn 0.11.2, andmatplotlib 3.4.2
- Why do the outputs not match, and how can this be resolved?
- The expectation is, given bins, thedensityof the corresponding plots should match.
- Information contained in Visualizing distributions of data doesn't resolve the question.
import seaborn as sns
import matplotlib.pyplot as plt
# sample data: wide
dfw = sns.load_dataset("penguins", cache=False)[['bill_length_mm', 'bill_depth_mm']].dropna()
# sample data: long
dfl = dfw.melt(var_name='bill_size', value_name='vals')
seaborn.displot
- Ignores 'sharex': False, though'sharey'works
- Ignores bins
fg = sns.displot(data=dfl, x='vals', col='bill_size', kde=True, stat='density', bins=12, height=4, facet_kws={'sharey': False, 'sharex': False})
plt.show()

- Setting xlimdoesn't make a difference
fg = sns.displot(data=dfl, x='vals', col='bill_size', kde=True, stat='density', bins=12, height=4, facet_kws={'sharey': False, 'sharex': False})
axes = fg.axes.ravel()
axes[0].set_xlim(25, 65)
axes[1].set_xlim(13, 26)
plt.show()

seaborn.histplot
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 4))
sns.histplot(data=dfw.bill_length_mm, kde=True, stat='density', bins=12, ax=ax1)
sns.histplot(data=dfw.bill_depth_mm, kde=True, stat='density', bins=12, ax=ax2)
fig.tight_layout()
plt.show()

Update
- As suggested by mwaskom, common_bins=Falsegets the histograms into the same shape, resolving the issues of ignoringbinsandsharex. However, thedensityseems to be affected by the number of plots in thedisplot.
- If there are 3 plots in the displot, then the density is 1/3 that shown in thehistplot; for 2 plots, the density is 1/2.
 

