Python-如何添加"胡须"点图?

时间:2016-12-01 21:38:15

标签: python matplotlib standard-deviation

问题

我有一个由导入数据制作的点图。一组数据显示数据集的各个成员之间的平均值的时间序列,另一组显示在采用平均值之前每个时间步的这些成员的标准偏差(SD)。我的顾问要我添加"胡须"对表示平均值的点显示+/- 1 SD。我将在下面提供一个简化的工作示例。

代码(示例)

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

#Generate some data
x = np.empty((7,9))
for i in range(7):
    x[i,:] = np.arange(1,10,(1+(i*.02)))
print x

#Find standard devs down each column
std = np.std(x,axis=0)*5
print std

#Get the mean of x data down each column
xmean = np.mean(x,axis=0)
print xmean

#Plot xmean data & x's stan. devs
legendlabels = ['Mean of members','S.D. of members']
time = np.arange(0,9)
fig, ax = plt.subplots(figsize=(11,6))
data1   = ax.scatter(time,xmean,s=70,color='k',marker='^')
data2   = ax.scatter(time,std,  s=70,color='k')
ax.legend([data1,data2],legendlabels,loc=2)
ax.grid()
plt.show()

SD乘以5,因此添加时,胡须实际上是可见的。结果应该是这样的。 enter image description here

问题

如何将胡须添加到代表+/- 1对应SD的三角形(下面圆圈的值)?鉴于我的实际数据并未显示沿y方向的范围,我不认为箱形图最适合此...

1 个答案:

答案 0 :(得分:2)

您可以添加以下错误栏:

ax.errorbar(time, xmean, yerr=std)

如果yerr是一个大小为time的一维数组,则相对于您的数据(yerr),{+ 3}会在+/- xmean处绘制误差线。 }}):

  

如果是标量数,len(N)类数组对象,或者是Nx1       类似于数组的对象,错误栏以+/-值相对绘制       对数据。

使用您的代码,结果是:

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.errorbar

有关详细信息,请参阅以下示例:enter image description here