web-dev-qa-db-fra.com

Moyenne de la parcelle et écart type

J'ai plusieurs valeurs d'une fonction à différents points x. Je veux tracer la moyenne et std en python, comme la réponse de this SO question . Je sais que cela doit être facile en utilisant matplotlib, mais je n'ai aucune idée de le nom de la fonction qui peut faire ça. Est-ce que quelqu'un le sait?

enter image description here

50
teaLeef

plt.errorbar peut être utilisé pour tracer x, y, les données d'erreur (par opposition à l'habituel plt.plot)

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5])
y = np.power(x, 2) # Effectively y = x**2
e = np.array([1.5, 2.6, 3.7, 4.6, 5.5])

plt.errorbar(x, y, e, linestyle='None', marker='^')

plt.show()

plt.errorbar accepte les mêmes arguments que plt.plot avec yerr et xerr supplémentaires, dont la valeur par défaut est Aucun (c.-à-d. si vous les laissez vides, il agira comme plt.plot).

Example plot

69
Ffisegydd

Vous pouvez trouver une réponse avec cet exemple: errorbar_demo_features.py

"""
Demo of errorbar function with different ways of specifying error bars.

Errors can be specified as a constant value (as shown in `errorbar_demo.py`),
or as demonstrated in this example, they can be specified by an N x 1 or 2 x N,
where N is the number of data points.

N x 1:
    Error varies for each point, but the error values are symmetric (i.e. the
    lower and upper values are equal).

2 x N:
    Error varies for each point, and the lower and upper limits (in that order)
    are different (asymmetric case)

In addition, this example demonstrates how to use log scale with errorbar.
"""
import numpy as np
import matplotlib.pyplot as plt

# example data
x = np.arange(0.1, 4, 0.5)
y = np.exp(-x)
# example error bar values that vary with x-position
error = 0.1 + 0.2 * x
# error bar values w/ different -/+ errors
lower_error = 0.4 * error
upper_error = error
asymmetric_error = [lower_error, upper_error]

fig, (ax0, ax1) = plt.subplots(nrows=2, sharex=True)
ax0.errorbar(x, y, yerr=error, fmt='-o')
ax0.set_title('variable, symmetric error')

ax1.errorbar(x, y, xerr=asymmetric_error, fmt='o')
ax1.set_title('variable, asymmetric error')
ax1.set_yscale('log')
plt.show()

Qui parcourt cela:

enter image description here

8
Kiwi