Как отметил @Jan, вы можете использовать seaborn
для этого, довольно просто управлять полосой пропускания на графике kde
. Вот пример со случайными нормальными данными:
import seaborn as sns
d = pd.DataFrame({'x':np.random.choice(['a','b','c'], 100), 'y':np.random.randn(100)})
fig, axes = plt.subplots(1,3)
for name,g in d.groupby('x'):
g['y'].plot.density(ax=axes[0], label=name)
sns.kdeplot(g['y'], bw=0.25, ax=axes[1], label=name)
sns.kdeplot(g['y'], bw=0.75, ax=axes[2], label=name)
axes[0].set_title('pandas plot.density', fontsize='12')
axes[1].set_title('seaborn kde with \n 0.25 bandwidth', fontsize='12')
axes[2].set_title('seaborn kde with \n 0.75 bandwidth', fontsize='12')
plt.legend()
Возвращает следующий график для сравнения: