您没有提供计算标准偏差的代码。也许你用过 pandas .std()
。Seaborn 使用 numpy 的。Numpystd
使用“贝塞尔校正”。/ n
当数据点的数量较少时(当vs/ (n-1)
较大时),差异最为明显。
以下代码可视化了通过 seaborn、numpy 和 pandas 计算的误差线之间的差异。
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
flights = sns.load_dataset('flights')
fig, ax = plt.subplots(figsize=(12, 5))
sns.barplot(x='month', y='passengers', data=flights, capsize=0.1, ci='sd', errwidth=0.9, fc='yellow', ec='blue', ax=ax)
flights['month'] = flights['month'].cat.codes # change to a numeric format
for month, data in flights.groupby('month'):
mean = data['passengers'].mean()
pandas_std = data['passengers'].std()
numpy_std = np.std(data['passengers'])
ax.errorbar(month - 0.2, mean, yerr=numpy_std, ecolor='crimson', capsize=8,
label='numpy std()' if month == 0 else None)
ax.errorbar(month + 0.2, mean, yerr=pandas_std, ecolor='darkgreen', capsize=8,
label='pandas std()' if month == 0 else None)
ax.margins(x=0.015)
ax.legend()
plt.tight_layout()
plt.show()
PS:一些相关的帖子以及附加信息: