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_pad
s 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")
Ich habe es gerade herausgefunden: Der Trick ist, bbox_inches='tight'
in savefig
zu verwenden.
Z.B. plt.savefig("test.png",bbox_inches='tight')
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.