|
Graphique (histogrammes, camemberts, lignes) depuis Python (via l'utilisation de RMChart) RMChart est un composant freeware, disponible là : http://www.rmchart.com. Il permet de créer des graphiques assez jolis, avec les composants GDI+ de Windows. RMChart est disponible comme un Active-X, ou comme une DLL. Pour faire Pxchart, je suis parti de rmchart.py (http://pyrmchart.googlepages.com), ce qui m'a évité de redéfinir toutes les (nombreuses constantes). Pour la même raison, pxchart s'appuie sur la DLL de RMChart. Merci aux auteurs de ces logiciels.
Dans un but de simplification, je n'ai pas repris toutes les possibilités de RMChart. Cela pourrait évoluer dans l'avenir, mais je reste attaché à une utilisation la plus facile possible.
Téléchargement
Pxchart fait partie de Ponx. En installant Ponx, pxchart est automatiquement installé. Lors des mises à jour, en ligne, de Ponx, pxchart est installé si nécessaire, ou mis à jour, si une version plus récente est disponible.
Notions de base
Chaque graphique est généré dans un fichier (.PNG ou .JPEG). Pour obtenir un graphique, il faut : - définir un "chart", - ajouter une "région" (une zone du "chart"), - appeler la création d'un graphe, - générer le fichier. Notez que : - il est possible de créer plusieurs régions ; - créer plusieurs graphes pour une même région (ils se superposeront).
Un petit exemple pour montrer l'utilisation
Cet exemple simple dessine un camembert avec trois positions, sauvegardé dans le fichier cam.jpg. import pxchart g=pxchart.chart() g.addregion(x=2,y=2,larg=-2,haut=-2,titre=u"Camembert") g.addcamembert(['Label1','Label2','Label3'],[66,22,55]) g.generefichier("cam.jpg")
Le résultat (réduit de moitié) : 
Nous allons maintenant voir les différentes méthodes de l'objet chart. pxchart.chart pxchart.chart(typ='bar', x=10,y=10, larg=640,haut=480, fond='')
chart permet de créer le graphe. Les paramètres sont : - le type ; inutilisé pour le moment. - x ; position gauche de début du graphe, en pixels - y ; position haute de début du graphe, en pixels - larg ; largeur du graphe, en pixels - haut ; hauteur du graphe, en pixels - fond ; (facultatif) image de fond du graphe. Peut être un .jpg, .png, .bmp. addregion addregion(x=0,y=0, larg=640, haut=480, titre=None)
Permet de créer une région, qui est une partie rectangulaire du graphe. Il appartient au développeur de calculer les tailles et positions des différentes régions. Pour un usage courant, une seule région suffit. Les paramètres sont : - x ; position gauche de début de la région, en pixels - y ; position haute de début de la région, en pixels - larg ; position de la largeur de la région, en pixels ; une valeur négative est comptée à partir du bord droit du graphe. - haut ; position basse de la hauteur de la région, en pixels ; une valeur négative est comptée à partir du bord bas du graphe. - titre ; (facultatif) titre de la région
addwatermark addwatermark(txt="Michel Claveau Informatique")
Ecrit un texte court sur le fond du graphe. Le (seul) paramètre est : - txt ; texte du "water-mark". generefichier generefichier(fichier="chart.png", show=True)
Enregistre le graphe créé dans un fichier. Les paramètres sont : - fichier ; nom du fichier ; l'extension (.jpg ou .png) indiquera à pxchart quel type de fichier utiliser - show ; indicateur pour visualisation du fichier créé. Cela se fait par appel du logiciel par défaut de visualisation d'un fichier .png ou .jpg addbarre addbarre(llabel,ldata,style=7,rotation=False)
Pour créer un graphique de type "histogrammme". Les paramètres sont : - llabel ; liste des labels (étiquettes) - ldata ; liste des données - style ; style de barre, parmi : RMC_BAR_FLAT = 1 RMC_BAR_FLAT_GRADIENT1 = 2 RMC_BAR_FLAT_GRADIENT2 = 3 RMC_BAR_HOVER = 4 RMC_COLUMN_FLAT = 5 RMC_BAR_3D = 6 RMC_BAR_3D_GRADIENT = 7 RMC_COLUMN_3D = 8 RMC_COLUMN_3D_GRADIENT = 9 RMC_COLUMN_FLUTED = 10 - rotation ; indique si les barres doivent être verticales (rotation=False) ou horizontales (rotation=True) Il n'y a pas de contrôle, sur la longueur des listes (labels et données), qui doivent être identiques. addbargroup addbargroup(llabel,lldata, style=6, rotation=False)
Pour créer un graphique de type "histogrammme multiples" (juxtaposés). Les paramètres sont : - llabel ; liste des labels (étiquettes) - lldata ; liste de listes des données - style ; style de barre ; ce sont les mêmes que pour addbarre - rotation ; indique si les barres doivent être verticales (rotation=False) ou horizontales (rotation=True) addpile addpile(llabel,lldata, style=6, rotation=False)
Pour créer un graphique de type "histogrammme empilés". Les paramètres sont : - llabel ; liste des labels (étiquettes) - lldata ; liste de listes des données - style ; style de barre ; ce sont les mêmes que pour addbarre - rotation ; indique si les barres doivent être verticales (rotation=False) ou horizontales (rotation=True) addcamembert addcamembert(llegend,ldata,numdetached=0,transparent=False,style=54)
Pour créer un graphique à secteur (camembert). Les paramètres sont : - llegend ; liste des labels (étiquettes) - ldata ; liste des données - numdetached ; numéro du secteur qui sera détaché (mis en exergue) ; à partir de 1 (0 pour aucun) - transparent ; permet d'utiliser une (légère) transparence pour le camembert ; utile en superposition (combinaison) de plusieurs graphiques - style ; définit le style du diagramme ; peut être : RMC_PIE_FLAT = 51 RMC_PIE_GRADIENT = 52 RMC_PIE_3D = 53 RMC_PIE_3D_GRADIENT = 54 RMC_DONUT_FLAT = 55 RMC_DONUT_GRADIENT = 56 RMC_DONUT_3D = 57 RMC_DONUT_3D_GRADIENT = 58 addpyramide addpyramide(llegend,ldata,numdetached=0,transparent=False,style=59) Permet de créer un graphique pyramidal, dont chaque bande (horizontale) est de taille proportionnelle à la valeur. Les paramètres sont : - llegend ; liste des labels - ldata ; liste des données - numdetached ; ignoré pour le moment - transparent ; ignoré pour le moment - style ; définit le style du diagramme ; peut être : RMC_PYRAMIDE = 59 RMC_PYRAMIDE3 = 60 addligne addligne(llabel,ldata,styleline=1,stylenode=10) Permet de créer un graphique avec ligne(s). N'oubliez pas que l'on peut superposer des graphiques. Les paramètres sont : - llabel ; liste des labels - ldata ; liste des données - styleline ; définit le style des lignes ; peut être : RMC_LSTYLE_LINE = 1 RMC_LSTYLE_SPLINE = 2 RMC_LSTYLE_STAIR = 3 RMC_LSTYLE_LINE_AREA = 4 # Draws a line and a transparent area RMC_LSTYLE_SPLINE_AREA = 5 # Draws a spline and a transparent area RMC_LSTYLE_STAIR_AREA = 6 # Draws a stair and a transparent area - stylenode ; définit le style des noeuds ; peut être : RMC_SYMBOL_NONE = 0 RMC_SYMBOL_BULLET = 21 RMC_SYMBOL_ROUND = 1 RMC_SYMBOL_DIAMOND = 2 RMC_SYMBOL_SQUARE = 3 RMC_SYMBOL_STAR = 4 RMC_SYMBOL_ARROW_DOWN = 5 RMC_SYMBOL_ARROW_UP = 6 RMC_SYMBOL_POINT = 7 RMC_SYMBOL_CIRCLE = 8 RMC_SYMBOL_RECTANGLE = 9 RMC_SYMBOL_CROSS = 10 RMC_SYMBOL_BULLET_SMALL = 22 RMC_SYMBOL_ROUND_SMALL = 11 RMC_SYMBOL_DIAMOND_SMALL = 12 RMC_SYMBOL_SQUARE_SMALL = 13 RMC_SYMBOL_STAR_SMALL = 14 RMC_SYMBOL_ARROW_DOWN_SMALL = 15 RMC_SYMBOL_ARROW_UP_SMALL = 16 RMC_SYMBOL_POINT_SMALL = 17 RMC_SYMBOL_CIRCLE_SMALL = 18 RMC_SYMBOL_RECTANGLE_SMALL = 19 RMC_SYMBOL_CROSS_SMALL = 20
addxy addxy(labelx,labely,ldatax,ldatay, style=4,label=True)
Permet de créer un graphique de points (x,y). Les paramètres sont : - labelx ; titre de l'axe des abcisses - labely ; titre de l'axe des ordonnées - ldatax ; liste des données (abcisses des points) - ldatay ; liste des données (ordonnées des points) - style ; définit le style des points ; peut être : RMC_SYMBOL_NONE = 0 RMC_SYMBOL_BULLET = 21 RMC_SYMBOL_ROUND = 1 RMC_SYMBOL_DIAMOND = 2 RMC_SYMBOL_SQUARE = 3 RMC_SYMBOL_STAR = 4 RMC_SYMBOL_ARROW_DOWN = 5 RMC_SYMBOL_ARROW_UP = 6 RMC_SYMBOL_POINT = 7 RMC_SYMBOL_CIRCLE = 8 RMC_SYMBOL_RECTANGLE = 9 RMC_SYMBOL_CROSS = 10 RMC_SYMBOL_BULLET_SMALL = 22 RMC_SYMBOL_ROUND_SMALL = 11 RMC_SYMBOL_DIAMOND_SMALL = 12 RMC_SYMBOL_SQUARE_SMALL = 13 RMC_SYMBOL_STAR_SMALL = 14 RMC_SYMBOL_ARROW_DOWN_SMALL = 15 RMC_SYMBOL_ARROW_UP_SMALL = 16 RMC_SYMBOL_POINT_SMALL = 17 RMC_SYMBOL_CIRCLE_SMALL = 18 RMC_SYMBOL_RECTANGLE_SMALL = 19 RMC_SYMBOL_CROSS_SMALL = 20 - label ; True ou False ; indique sir les valeurs des points seront affichées à leur côté. Exemple de graphique combiné
Pour conclure, un exemple un peu plus gros. import pxchart g=pxchart.chart(x=10,y=10,larg=1200,haut=800) g.addregion(x=2,y=2,larg=-2,haut=-2,titre=u"Graphique combiné avec PxChart") g.addbargroup( ['1','2','3','4','5','6','7','8','9','10'], [ [77,66,55,44,55,66,77,100,90,80], [7,6,5,4,5,6,7,28,7,8], [12,22,11,14,15,16,7,38,22,11], [18,28,14,14,12,10,17,28,20,21], ],style=1) g.addligne( ['1','2','3','4','5','6','7','8','9','10'], [77,66,33,11,44,55,22,33,44,55],4,4) g.addligne( ['Texte1','Texte2','Texte3','Texte4','Texte5','Texte6','Texte7','Texte8','Texte9','Texte10'], [60,77,66,33,28,40,28,55,50,66],2,21,color=0XFF8B0000) g.addwatermark("""PXCHART\r\n.""") g.generefichier("test.jpg")
Et voici le résultat de l'exemple de graphique combiné : 
|