web-dev-qa-db-fra.com

Tracé d'une ligne moyenne dans l'histogramme (matplotlib)

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!

49
user308827

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>

Résultat: plot

103
Warren Weckesser

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()))

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

13
Pörripeikko

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.

3
smitec