2009-12-21 9 views
7

Je souhaite mettre à jour dynamiquement le diagramme de dispersion en fonction des données de l'axe y reçues d'une connexion socket. J'ai utilisé python matplot lib en mode interactif pour ce faire, mais pendant la mise à jour dynamique si je déplace la fenêtre vers un emplacement différent ou si je minimise la fenêtre, la mise à jour du tracé s'arrête brusquement. Comment faire ça?Mode interactif dans matplotlib

J'ai joint un exemple de code de mise à jour dynamique utilisé ici et le même problème apparaît ici aussi.

import matplotlib.pyplot as plt 
import random 
import time 
items = [25.5,26.7,23.4,22.5,20,13.4,15.6,-12,-16,20] 
x = [1,2,3,4,5,6,7,8,9,10] 

plt.ion() # Interactive on 

for i in range(1,100): 
    plt.title('graph plotting') 
    plt.ylabel('temperature') 
    plt.xlabel('time') 
    random.shuffle(items) 
    plt.plot(x,items,'ob-') 
    plt.axis([0, 10, -40, 40]) 
    plt.draw() 
    #time.sleep(2) 
    plt.clf() 
    plt.close() 

Répondre

1

Pour que cela fonctionne, vous devez avoir une boucle principale pour la gestion des événements, et votre propre gestionnaire d'événements pour redessiner le tracé lorsque la fenêtre est redimensionnée ou rafraîchi.

Vous trouverez de nombreux exemples pour cela sur le web, ou dans les tutoriels. Je pense que cela est mieux géré en utilisant une boîte à outils de l'interface utilisateur (par exemple, wxPython), sans utiliser le mode interactif matplotlib (0). J'ai eu a similar question dans le passé et j'ai eu de bonnes réponses.

+0

Merci pour la réponse, j'ai cherché des exemples de gestion d'événements, mais je ne pouvais pas le trouver (je suis novice à python), pouvez-vous s'il vous plaît envoyez-moi un lien vers au moins un tel exemple. – Sharath

+0

@Sharath: Vous trouverez des liens dans la réponse à laquelle je suis lié. – Ber

+0

@Ber: Je voulais dire la gestion des événements dans les exemples matplot et pas wxPython, comme ce sont les événements que j'obtiens pour minimiser la fenêtre, le déplacement vers un emplacement différent, etc. Merci d'avance – Sharath

3

This page contient quelques exemples de graphiques dynamiques avec matplotlib et wxPython. Et here est une version avec PyQt.