绘制均值和标准差

87 投票
2 回答
330132 浏览
提问于 2025-04-17 22:49

我有几个不同x点的函数值。我想在Python中绘制这些值的平均值和标准差,就像这个问题的答案那样。我知道用matplotlib来做这个应该很简单,但我不知道具体哪个函数可以实现。有没有人知道呢?

enter image description here

2 个回答

20

你可以通过这个例子找到答案: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()

这个例子会画出这样的图:

这里输入图片描述

118

plt.errorbar 是一个可以用来绘制带有误差的数据图的工具(跟通常的 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 接受的参数和 plt.plot 是一样的,不过它多了两个参数 yerrxerr,这两个参数默认是 None(也就是说,如果你不填它们,它就会像 plt.plot 一样工作)。

示例图

撰写回答