matplotlib.pyplot.errorbar
errorbar函数的作用是在plot函数的基础上,在数据点位置绘制误差棒
函数:
matplotlib.pyplot.errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None, capsize=None, barsabove=False, lolims=False, uplims=False, xlolims=False, xuplims=False, errorevery=1, capthick=None, *, data=None, **kwargs)
函数参数的解释:
- x,y :数据的位置
- xerr, yerr:误差棒的误差范围,所有值必须为正值。类型为浮点数、类数组结构(N,) 或(2, N)。可选参数。
* 浮点数:所有点具有同一个对称的正负误差。
* 一维数组:每个点具有一个对应元素的对称的正负误差。
* (2, N)数组:每个点具有一个对应元素的非对称的正负误差。其中第一行包 含负误差,第二行包含正误差。
* None:不绘制误差棒- fmt:数据点/线的格式字符串,同plot函数。类型为字符串,默认值为’'。可选参数。当取值为none时,不显示点和线,例如fmt='o-'表示圆点和直线。
- ecolor:误差棒线条的颜色。类型为颜色值,默认值为None,即使用与误差棒连接的标记点的颜色。可选参数。
- elinewidth:误差棒线条的宽度。类型为浮点数,默认值为None,即当前样式所使用的的线条宽度。 可选参数。
- capsize:误差棒两端横杠的长度。类型为浮点数,单位为像素点,默认值为rcParams[“errorbar.capsize”],即0.0。可选参数。
- capthick:误差棒两端横杠的宽度(磅数),markeredgewidth参数的别名。类型为浮点数,默认值为None。可选参数。
- ms: 数据点的大小
- mfc: 数据点的颜色
- mec: 数据点边缘的颜色
# 数据变量为data_modify
data_modify
# 删除野点,删除两边各0.5%的野点
a = np.percentile(data_modify['z0'].values, 0.5)
b = np.percentile(data_modify['z0'].values, 99.5)
data_modify_1 = data_modify[(data_modify['z0']>a) & (data_modify['z0']<b)]
# 按月进行汇总
data_month_avg = data_modify_1.resample('M').mean().dropna()
# 计算时间序列平均值
z0_month = np.zeros(12)
for i in range(1,13,1):
j = i - 1
z0_month[j] = data_month_avg[data_month_avg['月']==i]['z0'].mean()
# 改变x轴时间标签
yday_ticks = np.zeros(12,dtype=int)
yday_labels = np.zeros(12,dtype=object)
for imonth in range(12):
dt = datetime(2019,imonth+1,1)
yday_ticks[imonth] = dt.timetuple().tm_yday
yday_labels[imonth] = dt.strftime('%b-%d')
z0_month_sigma = np.zeros(12)
for i in range(1,13,1):
j = i - 1
z0_month_sigma[j] = data_month_avg[data_month_avg['月']==i]['z0'].std()
# ecolor:errorbar的颜色
# fmt:线+点
# color:折线的颜色
# elinewidth:误差棒的线条粗细size
# capthick:误差棒两条横线的磅数
# capsize:误差棒两条棒的长度
# capthick:
plt.figure(figsize=(6,3),dpi=300)
plt.rc('font',family='Times New Roman')
plt.errorbar(x_time,z0_month,yerr=z0_month_sigma,fmt='o-',ecolor='r',color='b',elinewidth=1,capsize=8,capthick=1)
plt.xlabel('Month',fontsize=10)
plt.ylabel('z${_0}$',fontsize=10)
plt.xticks(fontsize=7)
plt.yticks(fontsize=7)
plt.xticks(np.arange(1,13,1),yday_labels,rotation=30)
#plt.savefig('动力学粗糙度月变化.png',dpi=500)