Обновление (2 августа 2019 г.):
Мой предыдущий ответ (см. Ниже) преувеличивает ошибку, поскольку yerr
использует одну и ту же ошибку для верхней и нижней частей, если передано единственноемассив формы (N,).Чтобы получить разные ошибки для нижней и верхней части, нам нужно использовать массив shape (2, N).Первая строка используется для нижней ошибки, а вторая - для верхней (из документации . В коде это:
# Bottom error, then top
yerr = [df['mean']-df['ci-b'], df['ci-t'] - df['mean']]
ax = sns.barplot('month','mean',data=df, ci=None)
plt.errorbar(x=[0, 1, 2, 3, 4],y=df['mean'],
yerr=yerr, fmt='none', c= 'r')
Результат ниже: 
Ошибки теперь различаются снизу и сверху.
Ниже приведено прямое сравнение с исходными (симметричными) полосами ошибок в красном и несимметричными полосами ошибок.синим цветом. Мы можем сразу увидеть различия:

Предыдущий ответ с преувеличенными ошибками
Месяцыseaborn
и matplotlib
интерпретируются по-разному, что приводит к нечетному размещению полос ошибок. Также необходимо указать fmt='none'
, чтобы избежать того, что errorbar
отображает точки данных в виде линий. Следующий код размещает полосы ошибок вправильные x мест:
ax = sns.barplot('month','mean',data=df, ci=None)
plt.errorbar(x=[0, 1, 2, 3, 4],y=df['mean'],
yerr=(df['ci-t']-df['ci-b']), fmt='none', c= 'r')
