Построение огибающей по серединам отрезков гистограммы

Делаю курсовую, одним из заданий которой является построение огибающей для распределения. Как пример приведу биномиальное распределение, у меня есть следующий код:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from scipy import stats

data = np.round(stats.binom(n=7, p=0.65).rvs(size=50), 3)
sns.histplot(data, bins=20, kde=False, linewidth=1, binwidth=1)
plt.show()

Соответственно сюда надо добавить график огибающей, пытался это сделать различными численными методами, но получалось не то. Хотелось бы видеть следующее: то, что хотелось видеть


Ответы (1 шт):

Автор решения: strawdog

Если я правильно понял вопрос, то сделать это можно так, например:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from scipy import stats
from scipy.interpolate import interp1d

data = np.round(stats.binom(n=7, p=0.65).rvs(size=50), 3)

res = sns.histplot(data, bins=20, kde=False, linewidth=1, binwidth=1)
x = np.arange(data.min()+.5, data.max()+.5)
y = [patch.get_height() for patch in res.patches]
X = np.linspace(x[0],x[-1],1000)
Y = interp1d(x, y, kind="quadratic")(X)
sns.lineplot(x=X,y=Y,color="r")
plt.show()

введите сюда описание изображения

→ Ссылка