У меня есть задача скопировать фигуру, созданную в R на python, с другим набором данных. К сожалению, у нас нет кода R, который изначально использовался для создания рисунка, но у меня есть хорошее примерное соответствие ниже. Я пытаюсь ответить на следующее:
- Как я могу добавить метки 'DV' и 'CS' и соответствующие им линии на график, чтобы они охватывали субплоты?
- Как я могу добавить yticks на самом левом графике, а не на остальных?
- Как я могу добавить ярлык "День жизни" вне всех графиков?
Вот старая цифра:

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

Вот код, который я использовал для его создания:
fig, (ax1, ax2, ax3, ax4) = plt.subplots(1, 4, figsize=(8,5), sharey=True)
sns.barplot(data=mean_df[mean_df['DV/CS']=='vag'][mean_df['CON/EVC']=='con'], x='Day',y='day',
ax=ax1, capsize=.1, palette=['#C4C4C4','#C4C4C4'], edgecolor='#6C6C6C', linewidth='3',
errcolor='#6C6C6C')
ax1.set_ylabel('Mean weighted UniFrac distance', size=15)
sns.barplot(data=mean_df[mean_df['DV/CS']=='vag'][mean_df['CON/EVC']=='imp'], x='Day',y='day',
ax=ax2, capsize=.1, palette=['#C1DBD8','#C1DBD8'], edgecolor='#439A89', linewidth='3',
errcolor='#439A89')
sns.barplot(data=mean_df[mean_df['DV/CS']=='csec'][mean_df['CON/EVC']=='con'], x='Day',y='day',
ax=ax3, capsize=.1, palette=['#C4C4C4','#C4C4C4'], edgecolor='#6C6C6C', linewidth='3',
errcolor='#6C6C6C')
sns.barplot(data=mean_df[mean_df['DV/CS']=='csec'][mean_df['CON/EVC']=='imp'], x='Day',y='day',
ax=ax4, capsize=.1, palette=['#C1DBD8','#C1DBD8'], edgecolor='#439A89', linewidth='3',
errcolor='#439A89')
for ax in [ax1, ax2, ax3, ax4]:
ax.set_xticklabels(ax.get_xticklabels(), size=15)
ax.set_xlabel('')
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
if ax!=ax1:
ax.set_ylabel('')
ax.spines['left'].set_visible(False)
ax.set_yticks([])
plt.tight_layout()
plt.show()