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")

Exemple de graphique avec Data2 coupé

23
demandé sur zje 2014-01-22 20:09:18

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')

fixe maintenant

60
répondu zje 2014-01-22 16:09:18

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.

0
répondu Elliot 2018-07-25 13:36:01