View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

PYQT | Premiers pas | Les bases | Port Série | Réseau | Memo PyQt | Memo PyQwt |

Affichage graphique et mathématique avec PyQt

Plusieurs librairies pour affichage graphique type scientifique ou mathématique sont disponibles et utilisables avec PyQt :

  • PyQwt : une librairie graphique dérivée de la version originale en C, Qwt. Cette librairie est actuellement obsolète et non maintenue, mais elle reste potentiellement utile en raison des widgets analogiques qu'elle propose et son utilisation facile avec QtDesigner.
  • Matplotlib : cette librairie est "The Must" de l'affichage graphique scientifique en Python, supportant notamment plusieurs environnement graphique dont PyQt. Une librairie incontournable qu'il faut connaître en raison de ses nombreuses possibilités avancées 2D et 3D. Cette librairie s'utilise également très facilement avec ipython. Par contre, cette librairie s'avère un peu lente pour des affichages temps réel. Intégration dans PyQt simple. Matplotlib est à privilégier dès lors que l'on souhaite réaliser des graphiques élaborés ( champs vectoriels, coordonnées polaires, etc... )
  • Pyqtgraph : Comme son nom l'indique, cette librairie est construite sur PyQt et son utilisation avec PyQt est donc naturelle. Cette librairie est plus simple dans ses possibilités que Matplotlib (ne supporte pas champs vectoriel, coordonnées polaires, etc..) mais propose aussi des choses qui n'existent pas avec matplotlib (notamment l'interactivité avec le graphique). Le point fort de Pyqtgraph : sa grande rapidité qui en fait la solution privilégiée pour des affichages temps-réel.

PyQt + Pyqtgraph : Afficher des courbes temps-réel et réaliser du calcul scientifique
PyQt + Qwt : afficher des graphiques analogiques et des courbes
PyQt + Matplotlib : Afficher des courbes mathématiques et réaliser du calcul scientifique?

PyQt + PyqtGraph : afficher des graphiques et des courbes

Tracé de courbes simples

Les bases

Affichages de courbes y=f(x)

  • Afficher une courbe de 1000 valeurs aléatoires simulant une série de données
  • Afficher/masquer plusieurs courbes simples dans un graphique pyqtgraph, sélectionnables par case à cocher *
  • Afficher une courbe à partir d'une série de valeurs chargées à partir d'un fichier texte ou saisies dans une zone texte, enregistrables dans un fichier texte
  • Définir la courbe à tracer à partir d'une formule saisie en zone texte, et enregistrer données dans fichier*

Exemples de courbes mathématiques

  • Exemple de courbe réelle : afficher la courbe du corps noir et la paramétrer à l'aide d'un slider

Affichage de courbes paramétriques y=f(t) et x=f(t)

  • Affichage d'une courbe paramétrique d'exemple * shell
  • Courbe de l'analemna

Paramétrage de l'interactivité du graphique

  • L'interactivité par défaut
  • Description du menu contextuel par défaut et des options disponibles
  • Exemple d'interactivité prédéfinie : voir affichage courbe simple
  • Afficher le point courant d'une courbe y=f(x) sous le curseur de la souris *
  • Afficher une croix de lignes sous la souris ainsi que le point courant d'une courbe *
  • Récupérer la valeur du point courant lors d'un clic souris *

Console intégrée

  • Interface PyQt intégrant graphique pyqtgraph et console dans une même GUI pour interactivité "en direct" avec le graphique*

Tracé de courbes avec timeline

  • Créer un graphique avec une timeline interactive *
  • Créer un graphique avec une timeline interactive à partir d'un fichier de données

Tracé de courbes "temps réel"

  • Affichage progressif d'une courbe *
  • Afficher une courbe à partir de valeurs reçues sur le port série (oscillo simple) *
  • Afficher une courbe à partir de valeurs reçues sur le port série, avec widgets de paramétrage des axes *
  • Idem avec affichage de la valeur courante et conversion en unité voulue
  • Idem avec option de tracé d'une croix de lignes et du point courant
  • Idem multicourbe sur le même graphe
  • Idem multicourbe sur n courbes

Images simples avec pyqtgraph

  • Affichage d'une image simple
  • Création d'une image telle que i=f(x,y)

Images avec widgets pyqtgraph

Images et ROI

Tracé d'images "temps-réel" ou animées

  • Affichage animé d'une image telle que i=f(x,y)

PyQt + Qwt : afficher des graphiques et des courbes

  • Présentation de Qwt et principe d'utilisation avec PyQt

Utiliser les widgets de réglages Qwt

  • Utiliser le QwtCounter, widget amélioré de réglage de valeur numérique
  • Utiliser le QwtWheel, widget de réglage rotatif sans fin
  • ...

Utiliser les widgets d'affichage analogique Qwt

  • Utiliser un afficheur analogique "à aiguille"
  • Régler un afficheur analogique "à aiguille" avec un slider
  • ..

Découvrir le QwtPlot, l'affichage des points, l'utilisation de marqueurs et l'utilisation du Zoom.

  • Découvrir et configurer QwtPlot, le widget de tracé de courbe
  • Afficher des points(x,y) quelconques dans un QwtPlot
  • Paramétrer l'aspect des points
  • Paramétrer l'aspect du tracé (le type de connexion entre les points)
  • Afficher un Marker dans un QwtPlot et le déplacer à l'aide de pushButton
  • Afficher les coordonnées du point courant du graphique sous le curseur souris +/- afficher axes passant par le point
  • Afficher un Marker à l'emplacement du curseur lors d'un clic souris
  • Appliquer un zoom (au besoin itératif) à une zone du graphique sélectionnée à la souris (sélection de zone, réinitialisation, zoom+, zoom-,...)

Tracer des courbes statiques avec Qwt

  • Afficher une simple courbe dans un QwtPlot
  • Appliquer un zoom (au besoin itératif) à une zone d'une courbe sélectionnée à la souris (sélection de zone, réinitialisation, zoom+, zoom-,...)
  • Sélectionner à l'aide de pushButton des points d'une courbe au sein d'un QwtPlot à l'aide d'un Marker et afficher les coordonnées du point courant
  • Modifier l'échelle d'affichage d'une courbe par appui sur un pushBouton + 2 champs texte (mapper valeurs / nombre x)

Tracer des courbes interactives avec Qwt

  • Modifier les paramètres de tracé d'une courbe à l'aide de sliders - 34 p.
  • Utiliser un QwtPlot à la façon "Processing"

Tracer des courbes "temps-réel" avec Qwt

pushButton

  • Ajouter des points à une courbe en "temps réel" par appui sur un pushButton
  • Datalogging de points d'une courbe ajoutés à l'aide push button, ouverture fichier, retracé courbe, etc...

timer

  • Afficher une courbe progressivement à l'aide d'un Timer (ajout final ou initial + effacement entre chaque passage) *
  • Afficher une courbe progressivement à l'aide d'un Timer (ajout final ou initial + affichage continu) *

Port série

  • Afficher sous forme d'une courbe des données reçues en temps réel depuis le port Série (base oscillo) (ajout final ou initial + effacement entre chaque passage)
  • Afficher une courbe progressivement à l'aide d'un Timer (ajout final ou initial + affichage continu)
  • Datalogging de points d'une courbe reçus par le port série, bouton stop/go, ouverture fichier, enregistrement courbe, retracé courbe, etc...
  • Application pour étalonnage de capteur (chaque appui pushButton prend en compte nouveau point basé sur X + Y mesuré) + datalogging

Tracé de Map avec Qwt

  • Utiliser une échelle de couleur
  • Tracer une Map
  • Afficher les contours d'un Map.

Calcul mathématique et gestion des tableaux

  • Fonctions de base de gestion des tableaux avec NumPy

Applications utilisant le tracé de courbe en temps réel

  • Un oscilloscope "mono-voie" pour Arduino simple
  • Un oscilloscope "multi-voies" simultanées pour Arduino simple
  • Un oscilloscope "multi-voies" séparées pour Arduino simple
  • Un oscilloscope "mono-voie" pour Arduino simple avec analyse graphique
  • Un oscilloscope "multi-voies" séparées pour Arduino simple avec analyse graphique
  • Un oscilloscope "multi-voies" simultanées pour Arduino simple avec analyse graphique
  • Un oscilloscope "mono-voie" pour Arduino avec fonction d'enregistrement dans un fichier
  • Un oscilloscope "multi-voies" pour Arduino avec fonction d'enregistrement dans un fichier

Création originale de X.HINAULT - www.mon-club-elec.fr - 2013 - Tous droits réservés - GPLv3