Reducir los márgenes izquierdo y derecho en el gráfico matplotlib

Resuelto robintw asked hace 14 años • 13 respuestas

Estoy luchando por lidiar con los márgenes de mi trama en matplotlib. He utilizado el siguiente código para producir mi gráfico:

plt.imshow(g)
c = plt.colorbar()
c.set_label("Number of Slabs")
plt.savefig("OutputToUse.png")

Sin embargo, obtengo una figura de salida con muchos espacios en blanco a ambos lados del gráfico. Busqué en Google y leí la documentación de matplotlib, pero parece que no puedo encontrar cómo reducir esto.

robintw avatar Oct 28 '10 17:10 robintw
Aceptado

Una forma de hacer esto automáticamente es bbox_inches='tight'kwarg to plt.savefig.

P.ej

import matplotlib.pyplot as plt
import numpy as np
data = np.arange(3000).reshape((100,30))
plt.imshow(data)
plt.savefig('test.png', bbox_inches='tight')

Otra forma es utilizarfig.tight_layout()

import matplotlib.pyplot as plt
import numpy as np

xs = np.linspace(0, 1, 20); ys = np.sin(xs)

fig = plt.figure()
axes = fig.add_subplot(1,1,1)
axes.plot(xs, ys)

# This should be called after all axes have been added
fig.tight_layout()
fig.savefig('test.png')
Joe Kington avatar Oct 28 '2010 18:10 Joe Kington

Puede ajustar el espaciado alrededor de las figuras matplotlib usando la función subplots_adjust():

import matplotlib.pyplot as plt
plt.plot(whatever)
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)

Esto funcionará tanto para la figura en pantalla como para la guardada en un archivo, y es la función correcta para llamar incluso si no tiene varios gráficos en una figura.

Los números son fracciones de las dimensiones de las figuras y deberán ajustarse para permitir las etiquetas de las figuras.

DaveP avatar Nov 01 '2010 04:11 DaveP