[Résolu] Problème avec savefig


#1

Bonjour à tous !
J’essaye de faire un relevé de paramètres météo en mettant à jour les dernières valeurs mesurées tout à droite sur l’axe du temps (axe X).
Lorsque j’utilise plt.show et plt.savefig j’obtiens la courbe voulue.
Lorsque je supprime le plt.show la courbe sauvegardée est “hachée”.
J’ai essayé diverses solutions (dont des timers en pensant que la sauvegarde n’a pas le temps de se faire, également avec scatter…) mais sans succès.
Quelqu’un aurait-il une idée ?
Merci d’avance pour votre aide.

Voici le code :
# -- coding: utf-8 --
import numpy as np
import matplotlib.pyplot as plt
import time

  # creation du graph (les dimensions sont en pouces)

fig=plt.figure(figsize=(6,4),dpi=100)

liste_Y=[]
liste_X=[]

  # initialisation des listes

for i in range(0,240):
liste_Y.append(0)
liste_X.append((-240+i))

while (True):

# décalage de la liste Y vers la gauche
for j in range(0,239):
    liste_Y[j]=liste_Y[1+j]
#acquisition de la valeur mesurée (imposée à 9 pour le test)
liste_Y[239]=9
#impression du graph et sauvegarde	
plt.plot(liste_X,liste_Y,"r-",linewidth=0.8) 
plt.savefig('/home/pi/Documents/test.jpg',dpi=80)
#   plt.show()
time.sleep(1)

Le résultat avec show activé (la première figure est la sauvegarde en jpg) :
fig_show_save
Le résultat que montre show (les deux sont bien identiques)
fig_show
… et le résultat sans show, le “hachage” est manifeste et je n’ai rien changé d’autre que de commenter plt.show() !!! :
fig_no_show_save


#2

J’ai trouvé !!! En fait il suffit de mettre clf() avant le plot(). Apparemment le show() inclut l’effacement de l’ancienne figure alors que le savefig() ne le fait pas… et j’avais une superposition de mes graphes !
J’espère que ceci pourra rendre service à d’autres !