散点图上的平均点和标准偏差条

时间:2019-04-30 00:09:16

标签: python matplotlib scatter-plot

如果我有像这样的MWE散点图:

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(5)
fig = plt.figure()
ax = fig.add_subplot(111)
xlist = []
ylist = []
for i in range(500):
    x = np.random.normal(100)
    xlist.append(x)
    y = np.random.normal(5)
    ylist.append(y)

x_ave = np.average(x)
y_ave = np.average(y)
plt.scatter(xlist, ylist)
plt.scatter(x_ave, y_ave, c = 'red', marker = '*', s = 50)

enter image description here

在图上绘制“平均点”(最合适的词?)的最简单方法是什么?我发现的所有教程和示例都显示了如何绘制最合适的线,但我只需要一个点。

绘制(x_ave, y_ave)是可行的,但是还有更好的方法吗,尤其是因为我最终还是想显示带有误差线的标准偏差?

1 个答案:

答案 0 :(得分:0)

如果要绘制带有误差线的单个散点,最好的方法是使用errorbar模块。以下答案显示了将其与误差条的自定义属性以及x和y的平均点的标准偏差均为1一起使用的示例。您可以在xerryerr中指定实际的标准偏差值。可以使用this解决方案从图例中删除错误栏。

plt.scatter(xlist, ylist)

plt.errorbar(x_ave, y_ave, yerr=1, xerr=1, fmt='*', color='red', ecolor='black', ms=20, 
             elinewidth=4, capsize=10, capthick=4, label='Average')

handles, labels = ax.get_legend_handles_labels()
handles = [h[0] for h in handles]
ax.legend(handles, labels, loc='best', fontsize=16)

enter image description here