python legend - Réduire les marges gauche et droite dans le graphique matplotlib




4 Answers

Une façon de faire automatiquement est le bbox_inches='tight' kwarg à plt.savefig .

Par exemple

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')

Une autre façon est d'utiliser fig.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')
subplot tracer

J'ai du mal à gérer mes marges dans matplotlib. J'ai utilisé le code ci-dessous pour produire mon tableau:

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

Cependant, je reçois un chiffre de sortie avec beaucoup d'espace blanc de chaque côté de l'intrigue. J'ai recherché google et lu la documentation de matplotlib, mais je ne peux pas sembler trouver comment réduire ceci.




Tout ce dont tu as besoin c'est

plt.tight_layout()

avant votre sortie.

En plus de réduire les marges, cela permet également de regrouper étroitement l'espace entre les sous-placettes:

x = [1,2,3]
y = [1,4,9]
import matplotlib.pyplot as plt
fig = plt.figure()
subplot1 = fig.add_subplot(121)
subplot1.plot(x,y)
subplot2 = fig.add_subplot(122)
subplot2.plot(y,x)
fig.tight_layout()
plt.show()



plt.savefig("circle.png", bbox_inches='tight',pad_inches=-1)



inspiré par Sammys réponse ci-dessus:

margins = {  #     vvv margin in inches
    "left"   :     1.5 / figsize[0],
    "bottom" :     0.8 / figsize[1],
    "right"  : 1 - 0.3 / figsize[0],
    "top"    : 1 - 1   / figsize[1]
}
fig.subplots_adjust(**margins)

Où figsize est le tuple que vous avez utilisé dans fig = pyplot.figure(figsize=...)




Related