Quel est le meilleur tracé en temps réel widget pour wxPython?
Je voudrais afficher un graphique en temps réel avec une ou deux courbes de un jusqu'à 50 échantillons par seconde à l'aide de Python et wxPython.
Le widget devrait soutenir Win32 et Linux.
Tous les conseils sont les bienvenus.
Modifiées afin d'ajouter:
Je n'ai pas besoin de mettre à jour l'affichage à 50 fps, mais besoin de montrer jusqu'à 50 échantillons de données sur les deux courbes, avec une fréquence de mise à jour pour l'écran (5..10 fps devrait être correct).
Modifiées afin d'ajouter:
J'ai utilisé mathplotlib dans un projet avec succès.
J'ai ensuite opté pour wx.lib.parcelle de terrain pour d'autres projets, que j'ai trouvé pour être plus simple, mais un peu plus facile à utiliser et consommer moins de cycles de PROCESSEUR. Comme wx.lib vient dans le cadre de la norme wxPython distribution est particulièrement facile à utiliser.
OriginalL'auteur Ber | 2009-01-19
Vous devez vous connecter pour publier un commentaire.
Si vous voulez de haute performance avec un minimum d'empreinte de code, ne cherchez pas plus loin que Python intégré au tracé de la bibliothèque tkinter. Pas besoin d'écrire spécial de code C /C++ ou de l'utilisation d'un grand complot paquet pour obtenir des performances bien meilleures que 50 fps.
Le code suivant fait défiler un 1000x200 diagramme à bande à 400 fps sur un 2.2 GHz Core 2 duo, 1000 fps sur un 3.4 GHz Core i3. La centrale de routine "scrollstrip" parcelles d'un ensemble de points de données et les couleurs correspondantes sur le bord droit le long avec une option de grille verticale de la barre, puis fait défiler le stripchart à gauche en 1. Pour tracer les horizontales de la grille des bars les inclure dans les données et la couleur des tableaux en tant que constantes le long de avec votre variable de points de données.
OriginalL'auteur Dave
Il n'est pas difficile de créer un C++ widget qui permettrait de lire à partir de votre source de données, et de mettre à jour à 50 FPS. La belle chose à propos de cette approche est que très peu (le cas échéant) code Python serait en cours d'exécution à 50 im /s, il en aurait dans le C++, selon la façon dont vous placez vos mises à jour de données pour le widget.
Vous pouvez même pousser un gestionnaire d'événement dans la coutume de données en temps réel de la visionneuse de l'Python côté, pour gérer tous les événements de la souris et l'interaction de l'utilisateur, et de laisser uniquement le rendu en C++.
Ce serait un petit C++ classe qui étend la classe wxWidget de wxWindow classe
classe RealtimeDataViewer: public wxWindow {
...
et remplacer OnPaint
void OnPaint(wxPaintEvent &WXUNUSED(event)) {
....
Alors il faudrait obtenir un périphérique de contexte, et de commencer à dessiner des lignes et des formes...
Il vous faudra alors prendre le .h fichier et le copier .j', et le modifier un peu pour en faire une définition qui RASADE pourraient utiliser pour prolonger wxPython.
Le processus de construction pourraient être pris en charge par Python propre distutils utiliser le paramètre suivant pour l'installation:
Il aurait quelques jours de travail pour obtenir la recherche de grande et de travail bien... Mais c'est probablement la seule option serait vraiment accélérer votre projet dans le futur.
Et tout cela fonctionne bien sur Mac, Windows et Linux.
wxPython est vraiment un Joyau caché qui serait vraiment prendre sur le monde avec les plus professionnels des prises en charge IDE /outils du concepteur.
Cela dit, essayez de matplotlib tout d'abord, il y a beaucoup de belles optimisé le rendu, et peut faire des mises à jour en temps réel aussi.
Comme vous le savez, l'option existe... je pense que matplotlib va faire un travail fantastique avec vos besoins actuels.
OriginalL'auteur Jim Carroll
Si vous voulez vraiment quelque chose de rapide avec 50 images par seconde, je pense que vous avez besoin de quelque chose comme PyGame et le type de parler directement à l'affichage, pas un complot module.
Vérifier que le fils:
OriginalL'auteur Mapad
- Je utiliser PyQtGraph pour ce genre de chose. Il est beaucoup plus rapide que Matplotlib en temps réel de traçage et a beaucoup de caractéristiques de commodité comme un menu contextuel dans le tracé de la toile avec de l'auto-scaling et le défilement sans travail supplémentaire.
OriginalL'auteur Mike
Peut-être Chaco? Je ne sais pas si il peut faire 50 images par seconde, mais j'ai vu dans une démonstration de la façon dont il l'a fait très lisse de traçage en temps réel. Il devrait certainement être plus rapide que matplotlib.
OriginalL'auteur nikow