Estoy trazando un conjunto de datos usando matplotlib
donde tengo una etiqueta x que es bastante "alta" (es una fórmula representada en TeX que contiene una fracción y, por lo tanto, tiene la altura equivalente a un par de líneas de texto).
En cualquier caso, la parte inferior de la fórmula siempre se corta cuando dibujo las figuras. Cambiar el tamaño de la figura no parece ayudar a esto, y no he sido capaz de descubrir cómo desplazar el eje x "hacia arriba" para dejar espacio para la etiqueta x. Algo así sería una solución temporal razonable, pero lo que sería bueno sería tener una manera de hacer que matplotlib reconozca automáticamente que la etiqueta se corta y se redimensiona en consecuencia.
Aquí hay un ejemplo de lo que quiero decir:
import matplotlib.pyplot as plt
plt.figure()
plt.ylabel(r'$\ln\left(\frac{x_a-x_b}{x_a-x_c}\right)$')
plt.xlabel(r'$\ln\left(\frac{x_a-x_d}{x_a-x_e}\right)$')
plt.show()
Si bien puede ver toda la etiqueta, la etiqueta x se corta en la parte inferior.
En el caso de que este sea un problema específico de la máquina, lo estoy ejecutando en OSX 10.6.8 con matplotlib 1.0.0
fuente
plt.savefig("test.png",bbox_inches='tight')
: stackoverflow.com/questions/21288062/…Respuestas:
Utilizar:
para dejar espacio a la etiqueta.
Editar:
Desde que di la respuesta,
matplotlib
ha agregado latight_layout()
función. Así que sugiero usarlo:debería dejar espacio para la etiqueta.
fuente
gcf().subplots_adjust
más queplt.subplots_adjust
? ¿Hay una diferencia?gcf
ygca
? ¡Olvidaste explicarlo!tight_layout()
solucioné el corte de las etiquetas, desafortunadamente causó que mi etiqueta se cortara (que no estaba cortada antes). Sin embargo, el primer remedio (subplots_adjust(bottom=0.25)
) funcionó bien. Gracias.gcf()
ygca()
son "obtener la figura actual" y "obtener los ejes actuales", respectivamente.Una opción fácil es configurar matplotlib para ajustar automáticamente el tamaño de la trama. Funciona perfectamente para mí y no estoy seguro de por qué no está activado por defecto.
Método 1
Establezca esto en su archivo matplotlibrc
Consulte aquí para obtener más información sobre la personalización del archivo matplotlibrc: http://matplotlib.org/users/customizing.html
Método 2
Actualice los rcParams durante el tiempo de ejecución de esta manera
La ventaja de utilizar este enfoque es que su código producirá los mismos gráficos en máquinas configuradas de manera diferente.
fuente
En caso de que desee almacenarlo en un archivo, lo resuelve utilizando el
bbox_inches="tight"
argumento:fuente
Poner
plot.tight_layout()
después de todos los cambios en el gráfico, justo antesshow()
osavefig()
resolverá el problema.fuente
plt.autoscale()
trabajó para mi.fuente
También puede establecer el relleno personalizado como predeterminado en su de la
$HOME/.matplotlib/matplotlib_rc
siguiente manera. En el ejemplo a continuación, modifiqué el relleno original inferior e izquierdo:fuente