Я пытаюсь динамически масштабировать оси y для каждой строки подзаголовков, поэтому я решил вручную определить ymax для каждого подзаголовка, который я создавал бы с циклом for.Разная шкала y для каждой строки Matplotlib
fig, ax = plt.subplots(3, len(motif.strip()), figsize=(15, 10), sharex=True, sharey=True)
for i, s in enumerate(dataw.pos.unique()):
for j, r in enumerate(dataw.type.sort_values().unique()):
atmp = dataw[(dataw.pos == s) & (dataw.type == r)]
btmp = dataw[(dataw.type == r)]
ymax = (btmp['values'].values).max()
#print(btmp)
#print(ymax)
tmp = [atmp[atmp['base'] == 'A']['values'].values,
atmp[atmp['base'] == 'G']['values'].values,
atmp[atmp['base'] == 'T']['values'].values,
atmp[atmp['base'] == 'C']['values'].values]
ax[j][i].violinplot(tmp)
ax[j][i].set_ylim([0, ymax])
#ax[j][i].set(xlabel='base',
# ylabel='values',
# title=s + '--' + r)
fig.tight_layout()
fig.savefig(str(graph) + ".png")
То, что я прямо сейчас:
То, что я хотел бы иметь (отметить разные Y оси для каждой строки):