La segunda etiqueta del eje y se corta

Estoy tratando de trazar dos conjuntos de datos en un gráfico de barras con matplotlib, así que estoy usando dos ejes con el método twinx() . Sin embargo, la segunda etiqueta del eje y se corta. He intentado algunos métodos diferentes sin éxito ( tight_layout() , configurando el major_pad s en rcParams , etc …). Siento que la solución es simple, pero no la he encontrado todavía.

Aquí hay 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 

side plt.savefig (“test.png”)

Ejemplo de gráfico con Data2 cortado

Lo descubrí: el truco es usar bbox_inches='tight' en savefig .

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

arreglado ahora

Encontré el mismo problema que plt.tight_layout() no resolvió automáticamente.
En su lugar, utilicé el argumento del panel de ylabel en ylabel / set_ylabel como tal:

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

Supongo que esto no se implementó cuando hiciste esta pregunta, pero como es el principal resultado en Google, espero que pueda ayudar a los usuarios de la versión actual de matplotlib.