Deuxième Y-axe étiquette obtention cut off
J'essaie de tracer deux ensembles de données dans un graphique à barres avec matplotlib, donc j'utilise deux axes avec la méthode twinx()
. Cependant, la deuxième étiquette de l'axe y est coupée. J'ai essayé quelques méthodes différentes sans succès (tight_layout()
, en définissant les major_pad
s dans rcParams
, etc...). J'ai l'impression que la solution est simple, mais je ne l'ai pas encore rencontrée.
Voici un MWE:
#!/usr/bin/env python
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
matplotlib.rcParams.update({'font.size': 21})
ax = plt.gca()
plt.ylabel('Data1') #Left side
ax2 = ax.twinx()
for i in range(10):
if(i%2==0):
ax.bar(i,np.random.randint(10))
else:
ax2.bar(i,np.random.randint(1000),color='k')
plt.ylabel('Data2') #Right
Côté plt.savefig ("test.png")
2 réponses
Je viens de comprendre: l'astuce est d'utiliser bbox_inches='tight'
dans savefig
.
E. G. plt.savefig("test.png",bbox_inches='tight')
J'ai rencontré le même problème que plt.tight_layout()
n'a pas résolu automatiquement.
Au lieu de cela, j'ai utilisé l'argument labelpad dans ylabel
/set_ylabel
en tant que tel:
ax.set_ylabel('label here', rotation=270, color='k', labelpad=15)
Je suppose que cela n'a pas été implémenté lorsque vous avez posé cette question, mais comme c'est le meilleur résultat sur google, j'espère que cela peut aider les utilisateurs de la version actuelle de matplotlib.