web-dev-qa-db-de.com

Zweites Y-Achsen-Label wird abgeschnitten

Ich versuche mit Matplotlib zwei Datensätze in einem Balkendiagramm zu zeichnen, daher verwende ich zwei Achsen mit der twinx()-Methode. Das zweite Y-Achsen-Label wird jedoch abgeschnitten. Ich habe ein paar verschiedene Methoden ohne Erfolg ausprobiert (tight_layout(), Einstellung des major_pads in rcParams usw.). Ich finde, dass die Lösung einfach ist, aber ich bin noch nicht darauf gestoßen.

Hier ist eine 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

seite plt.savefig ("test.png")

Sample graph with Data2 cut off

23
zje

Ich habe es gerade herausgefunden: Der Trick ist, bbox_inches='tight' in savefig zu verwenden.

Z.B. plt.savefig("test.png",bbox_inches='tight')

fixed now

75
zje

Ich bin auf dasselbe Problem gestoßen, das plt.tight_layout() nicht automatisch gelöst hat.
Stattdessen habe ich das labelpad-Argument in ylabel/set_ylabel Als solches verwendet:

ax.set_ylabel('label here', rotation=270, color='k', labelpad=15)

Ich denke, dies wurde nicht implementiert, als Sie diese Frage stellten, aber da es das Top-Ergebnis bei Google ist, kann es hoffentlich Benutzern der aktuellen matplotlib-Version helfen.

0
Elliot