J'essaie d'enregistrer une figure Matplotlib en tant que fichier à partir d'un bloc-notes iPython.
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_axes([1,1,1,1])
ax.plot([1,2])
fig.savefig('test.png')
La vue en ligne du bloc-notes iPython semble bonne:
Le fichier 'test.png' est cependant presque vide. Il semble que l'intrigue soit décalée en haut à droite, vous pouvez voir les étiquettes de graduation '1.0' et '0.0' dans le coin.
Comment puis-je produire un fichier à partir du bloc-notes iPython qui ressemble à la vue en ligne?
Problème résolu: ajoutez 'bbox_inches='tight'
argument pour savefig.
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_axes([1,1,1,1])
plt.plot([1,2])
savefig('test.png', bbox_inches='tight')
Je ne comprends pas ce qui se passe ici, mais le fichier ressemble maintenant au fichier en ligne du bloc-notes iPython. Yay.
En fait, le savefig
fonctionne correctement. Lorsque vous appelez add_axes
, Votre liste spécifie un rectangle: [left, bottom, width, height]
. Étant donné que la figure passe de 0 à 1 sur les deux axes avec l'origine en bas à gauche, vous créez un rectangle de largeur et de hauteur 1 à partir du haut à droite de la figure. Vous voudrez probablement faire ax = fig.add_axes([0,0,1,1])
.
Je ne sais pas pourquoi le tracé en ligne ne respecte pas l'endroit où vous avez placé les axes. Si je devais deviner, je dirais que le backend en ligne chiffre automatiquement la boîte englobante et place la figure en ligne en fonction de cela.