Можно ли ввести значения для доверительного интервала / погрешности на графике морского побережья? - PullRequest
0 голосов
/ 11 октября 2018

Я привык делать свои барплоты на морском дне, и мне нравится его макет для отображения доверительных полос, но у меня есть особый случай в наборе данных, где у меня уже есть доверительный интервал, например:

month   ci-b     mean    ci-t
201801  0.020   0.0206  0.021
201802  0.019   0.0198  0.0204
201803  0.022   0.0225  0.0228
201804  0.022   0.0236  0.0240
201805  0.023   0.0235  0.0239

Есть ли способ вручную ввести значения для линий доверительного интервала моря?Или использовать его как «None» и использовать некоторую функцию matlib, чтобы поместить доверительный интервал в график (но с сохранением барблота Морского Рога)

Когда я делаю:

ax = sns.barplot('month','mean',data=df, ci=None)

Я получаю, какожидается, что нормальный график:

Этот рисунок

И когда я пытаюсь использовать панель ошибок Matlib, как это:

ax = sns.barplot('month','mean',data=df, ci=None)
plt.errorbar(x=df['month'],y=df['mean'],yerr=(df['ci-t']-df['ci-b']))

Все становится запутаннымс одной странной линией, потерянной на рисунке:

Как на этом графике

Я неправильно использую панель ошибок?Есть ли лучший инструмент для этого?

1 Ответ

0 голосов
/ 11 октября 2018

Обновление (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')

Результат ниже: enter image description here

Ошибки теперь различаются снизу и сверху.

Ниже приведено прямое сравнение с исходными (симметричными) полосами ошибок в красном и несимметричными полосами ошибок.синим цветом. Мы можем сразу увидеть различия:

enter image description here

Предыдущий ответ с преувеличенными ошибками

Месяцы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')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...