使用MatPlotLib绘制带有误差范围的折线图

5 投票
1 回答
1659 浏览
提问于 2025-04-17 21:37

我正在尝试绘制一个包含十个数值的折线图,并在每个点上显示误差范围:

u = [1,2,3,4,5,6,7,8,9,10]
plt.errorbar(range(10), u, yerr=1)
plt.show()

但我收到了错误信息

ValueError: too many values to unpack

有人能告诉我怎么在每个点上绘制带误差条的折线图吗? http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.errorbar

谢谢

1 个回答

4

plt.errorbar 这个函数要求你提供的误差值(也就是数据的不确定性)要和 x 值和 y 值的数量一致。也就是说,如果你有一组 x 值和一组 y 值,那么对应的误差值也得有相同的数量。你可以用两元组的列表来表示上下误差,或者用一个简单的列表来表示对称误差。

你想做的事情大概是这样的:

u = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
plt.errorbar(range(10), u, yerr=[1]*10)

或者更清晰一点,如果你把 numpy 导入为 np 的话:

u = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
plt.errorbar(np.arange(10), u, yerr=np.ones(10))

撰写回答