Ответ 1
Если вы хотите построить дистрибутив, и вы его знаете, определите его как функцию и нарисуйте его так:
import numpy as np
from matplotlib import pyplot as plt
def my_dist(x):
return np.exp(-x ** 2)
x = np.arange(-100, 100)
p = my_dist(x)
plt.plot(x, p)
plt.show()
Если у вас нет точного распределения в качестве аналитической функции, возможно, вы можете создать большой образец, взять гистограмму и как-то сгладить данные:
import numpy as np
from scipy.interpolate import UnivariateSpline
from matplotlib import pyplot as plt
N = 1000
n = N/10
s = np.random.normal(size=N) # generate your data sample with N elements
p, x = np.histogram(s, bins=n) # bin it into n = N/10 bins
x = x[:-1] + (x[1] - x[0])/2 # convert bin edges to centers
f = UnivariateSpline(x, p, s=n)
plt.plot(x, f(x))
plt.show()
Вы можете увеличить или уменьшить s
(коэффициент сглаживания) в вызове функции UnivariateSpline
для увеличения или уменьшения сглаживания. Например, используя два, вы получаете: