Seaborn Barplot с ошибками баров только в одном направлении - PullRequest
1 голос
/ 03 октября 2019

Я использую функцию морского барплота для отображения данных из разных групп. Можно ли построить график ошибок только в одном направлении (только вверх, но не вниз)?

Вот что у меня есть:

np.random.seed(2)
df = pd.DataFrame({'value': np.random.randint(0,100,20), 'group1': ['A','B']*10, 'group2': ['Y','Z']*5 + ['Z','Y']*5 })

fig, ax = plt.subplots(1,1,figsize=[5,6])
sns.barplot('group1','value','group2',data=df, ax=ax,capsize=.15, lw=1, edgecolor=".2", ci=68) # SEM errorbars
plt.show()

enter image description here

И вот что я хочу:

enter image description here

Спасибо!

1 Ответ

1 голос
/ 03 октября 2019

Я не вижу опции по умолчанию в seaborn, но мы можем сделать трюк с zorder

fig, ax = plt.subplots(1,1,figsize=[5,6])

# plot the error bars
# notice the zorder
sns.barplot('group1','value','group2',
            data=df, 
            ax=ax,capsize=.15, zorder=5,
            ci=68) # SEM errorbars

# plot the mean bars
# notice the zorder
sns.barplot('group1','value','group2',
            data=df, 
            ax=ax, lw=1, edgecolor=".2",
            zorder=10,
            ci=None) # no CI errorbars

# handle the duplicate legend
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles[-2:], labels[-2:], title='group2')

plt.show()

Вывод:

enter image description here

...