Je dessine un histogramme en utilisant matplotlib en python, et je voudrais tracer une ligne représentant la moyenne de l'ensemble de données, superposée sur l'histogramme comme une ligne pointillée (ou peut-être qu'une autre couleur ferait aussi). Des idées sur la façon de tracer une ligne superposée sur l'histogramme?
J'utilise la commande plot (), mais je ne sais pas comment dessiner une ligne verticale (c'est-à-dire quelle valeur dois-je donner pour l'axe y?
merci!
Vous pouvez utiliser plot
ou vlines
pour tracer une ligne verticale, mais pour tracer une ligne verticale du bas vers le haut de l'axe y, axvline
est probablement la plus simple fonction à utiliser. Voici un exemple:
In [80]: import numpy as np
In [81]: import matplotlib.pyplot as plt
In [82]: np.random.seed(6789)
In [83]: x = np.random.gamma(4, 0.5, 1000)
In [84]: result = plt.hist(x, bins=20, color='c', edgecolor='k', alpha=0.65)
In [85]: plt.axvline(x.mean(), color='k', linestyle='dashed', linewidth=1)
Out[85]: <matplotlib.lines.Line2D at 0x119758828>
C'est un vieux sujet et un ajout mineur, mais j'ai souvent aimé tracer également la valeur moyenne à côté de la ligne:
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(6789)
x = np.random.gamma(4, 0.5, 1000)
result = plt.hist(x, bins=20, color='c', edgecolor='k', alpha=0.65)
plt.axvline(x.mean(), color='k', linestyle='dashed', linewidth=1)
min_ylim, max_ylim = plt.ylim()
plt.text(x.mean()*1.1, max_ylim*0.9, 'Mean: {:.2f}'.format(x.mean()))
Je regarderais la plus grande valeur de votre ensemble de données (c'est-à-dire les valeurs de l'histogramme) multiplier cette valeur par un nombre supérieur à 1 (disons 1,5) et l'utiliser pour définir la valeur de l'axe y. De cette façon, il apparaîtra au-dessus de votre histogramme indépendamment des valeurs contenues dans l'histogramme.