import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# Données
valeurs = np.array([16, 25, 27, 28, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 43, 44, 48])
occurrences = np.array([1, 1, 1, 2, 2, 3, 4, 4, 4, 4, 5, 1, 3, 3, 1, 3, 1])

# Reconstruction des données brutes
data = []
for v, occ in zip(valeurs, occurrences):
    data.extend([v] * occ)
data = np.array(data)

# Paramètres de la gaussienne
mu = np.mean(data)
sigma = np.std(data)

print(f"Moyenne = {mu:.2f}")
print(f"Ecart-type = {sigma:.2f}")

# Axe x pour la courbe
x = np.linspace(min(data)-5, max(data)+5, 100)

# Densité de probabilité gaussienne
pdf = norm.pdf(x, mu, sigma)

# Mise à l'échelle pour correspondre à l'histogramme
pdf_scaled = pdf * len(data) * (x[1] - x[0])

# --- Affichage ---
plt.figure(figsize=(8, 5))

# Histogramme
#plt.hist(data, bins=10, alpha=0.6, edgecolor='black', label="Données observées")
plt.bar(valeurs, occurrences, alpha=0.6, label="Données observées")

# Courbe gaussienne
plt.plot(x, pdf_scaled, 'r-', label=f"Gaussienne (μ={mu:.2f}, σ={sigma:.2f})")

# Habillage
plt.xlabel("Nombre de coups sans bruit")
plt.ylabel("Occurrences")
plt.title("Ajustement gaussien des données")
plt.legend()
plt.grid()

plt.show()

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: