J'ai un simple code python comme suit:
import numpy as np
import matplotlib.pyplot as plt
"""
Here are the solutions and the plot.
"""
# Create the axis and plot.
plt.axis([0, 10, 0, 10])
axis_x = range(1, 11)
grd = [1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1, 9.1, 10.1]
grd2 = [1.2, 2.2, 3.2, 4.2, 5.2, 6.2, 7.2, 8.2, 9.2, 10.2]
plt.plot(axis_x, grd, '-g', label='BR1')
plt.plot(axis_x, grd2, '-b', label='BR2')
plt.legend(loc='upper left')
plt.grid()
plt.show()
# Save the results vector to a text file.
np.savetxt('test.out', (grd, grd2))
# Save the figure as '.eps' file.
plt.savefig('expl.pdf', format='pdf', dpi=1200)
Lorsque j'ouvre les fichiers de sortie expl.pdf
et/ou test.out
Je les trouve vides et rien dedans. Pourquoi?
Merci.
Lorsque vous fermez l'image affichée par plt.show()
, l'image est fermée et libérée de la mémoire.
Vous devez appeler savefig
et savetxt
avant d'appeler show
.
Votre tracé ne peut pas être généré car vous avez défini la liste axis_x
Ayant uniquement la longueur 9, tandis que grd
et grd2
Ont la longueur égale à 10. Remplacez simplement la définition de axis_x
Avec:
axis_x=range(1,11)
et votre tracé apparaîtra et il sera enregistré OK.
Je viens de rencontrer le même problème et la résolution était de mettre la commande savefig avant l'instruction plt.show()
, mais de spécifier le type de fichier explicitement. Voici mon code:
plt.suptitle("~~~~")
plt.title("~~~~")
ax = sns.boxplot(x=scores_df.score, y=scores_df.response)
plt.savefig("test.png", **format="png"**)
plt.show()
plt.close()