90 votes

Dessiner une ligne moyenne dans un histogramme (matplotlib)

Je dessine un histogramme à l'aide de matplotlib en python, et j'aimerais tracer une ligne représentant la moyenne de l'ensemble des données, superposée à l'histogramme sous la forme d'une ligne pointillée (ou peut-être une autre couleur). Avez-vous des idées sur la façon de dessiner une ligne superposée à 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 à l'axe des ordonnées ?

Merci !

159voto

Warren Weckesser Points 17089

Vous pouvez utiliser plot o vlines pour tracer une ligne verticale, mais pour tracer une ligne verticale du bas vers le haut de l'axe des y, axvline est probablement la fonction la plus simple à 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>

Résultat : plot

46voto

Pörripeikko Points 181

C'est un vieux sujet et un ajout mineur, mais une chose que j'ai souvent appréciée est de 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()))

Ce qui donne le résultat suivant : Average line with text

2voto

smitec Points 1753

Je prendrais la plus grande valeur de votre ensemble de données (c'est-à-dire les valeurs des cases de l'histogramme), je multiplierais cette valeur par un nombre supérieur à 1 (disons 1,5) et je l'utiliserais pour définir la valeur de l'axe des ordonnées. De cette façon, elle apparaîtra au-dessus de votre histogramme, quelles que soient les valeurs de l'histogramme.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X