Libxy

Librairie graphique python


Introduction / présentation

Libxy est une brève bibliothèque python fournissant des outils et fonctions grahiques. Cette bibliothèque a été écrite pour, au moins, deux raisons:

Pourquoi cette nouvelle bibliothèque ?

Si python est un langage de programmation, on ne peut plus moderne et largement multi-plateformes: linux, windows, mac, mais aussi les environnements "portables", principalement Android et Ios, ce n'est pas le cas de toutes les bibiliothèques. En particulier, les bibliothèques graphiques et de calcul mathématique telles que matplotlib, ne sont pas facilement installables sur tous les appareils, notamment les appareils mobiles/tablettes fonctionnant avec Android.
De plus, ces librairies graphiques ne sont pas forcément souples et faciles à utiliser, du moins pour des personnes débutantes avec la programmation et avec python. À cette fin, Libxy fournit des fonctions plus simples à utiliser pour construire des éléments géométriques et graphiques. Par exemple, on utilise assez "naturellement"
A=(2,5); Point(A)
pour placer un point, ou encore
A=(2,5);B=(6,-3); Line(A,B,width=3)
pour tracer le segment [AB] avec une trait de 3 pixels d'épaisseur.

On peut jeter un coup d'œil aux quelques exemples donnés plus bas dans lesquels les instructions graphiques sont colorées en rouge.

Téléchargement / Installation

Libxy est présent dans l'archive téléchargeable ici .
Cette archive contient:
  • le fichier python Libxy.py, bibliothèque de quelques fonctions graphiques
  • trois programmes python d'exemples:
    • blank.py : un fichier vide, contenant juste l'import de la bibliothèque, son initialisation et sa fermeture; modèle à utiliser pour des premiers programmes
    • ExampleMini.py : un exemple minimal, pour tester et avoir un premier aperçu
    • PictureExamples.py: un exemple assez complet, qui se veut démonstratif des capacités de la bibliothèque (combinée bien sûr avec de la programmation en python)

Le fichier python Libxy.py peut être téléchargé seul .

Installation

Il n'y a pas d'installation à proprement parler, il suffit de créer un dossier, d'y décompresser l'archive Libxy.zip ou seulement d'y copier le fichier Libxy.py.
Sous Android, avec qpython, il faut veiller à travailler dans le dossier qpython qui est directement accessible à l'explorateur et à l'éditeur de qpython.

Utilisation / import

Dans chaque programme python où on souhaite utiliser Libxy, il suffit d'importer l'ensemble des fonctions:
from Libxy import *
Une utilisation minimale requiert alors les trois lignes:
from Libxy import *
InitGraph ()

# Instructions python et graphiques

SaveGraph ()
La fonction InitGraph initialise un nouveau graphique, tandis que finalement SaveGraph enregistre, par défaut sous le nom Picture.bmp dans le répertoire de travail, le graphique crée avec tous ses éléments.
Voir dans la liste des fonctions, pour un détail complet des arguments possibles pour les fonctions InitGraph et SaveGraph.
Voir aussi à ce propos, éventuellement préalablement, par exemple ce guide sur la définition et l'utilisation de fonctions en python.

Liste des fonctions et arguments/options

Ci-dessous la liste détaillée des fonctions disponibles dans la bibliothèque Libxy. Pour chaque fonction, un appel minimal, c'est-à-dire avec le plus grand nombre de paramètres par défaut, est donné; ensuite s'ensuit une description plus complète avec tous les arguments.

InitGraph

L'appel de la fonction InitGraph
InitGraph ()
initialise un nouveau graphique, plus précisément un nouvel espace, dans lequel on peut utiliser les fonctions graphiques de Libxy.
Les paramètres optionnels sont:
  • Xmin,Xmax: les valeurs minimales et maximales en abscisse.
    Par défaut Xmin=-10 et Xmax=10.
  • Ymin,Ymax: les valeurs minimales et maximales en ordonnées.
    Par défaut Ymin=-10 et Ymax=10.
  • Size: une image carré est produite; Size est le nombre de pixels utilisés en largeur et en hauteur.
    Par défaut Size=400, et une image de 400x400=160 000 pixels est générée.
  • Linewidth: la largeur, en pixels, des lignes qui seront tracées. Linewidth spécifie la largeur qui sera utilisée par défaut; celle-ci peut ensuite être indiquée spécifiquement à chaque construction.
    Par défaut, Linewidth=1.
  • PointSize: la taille, en pixels, des points qui seront tracés. PointSize spécifie la taille qui sera utilisée par défaut; celle-ci peut ensuite être indiquée spécifiquement à chaque construction.
    Par défaut, PointSize=1.
L'appel InitGraph() est donc équivalent à InitGraph(Xmin=-10,Xmax=10,Ymin=-10,Ymax=10,Size=400,PointSize=1,LineWidth=1).

SaveGraph

L'appel de la fonction SaveGraph
SaveGraph()
sauvegarde l'espace graphique créé avec tous ses éléments. Par défaut, SaveGraph() enregistre l'image dans le fichier "Picture.bmp".
On peut spécifier un nom d'image différent, via l'option SaveGraph(Name="file") ou plus simplement SaveGraph("file") qui dirigera la sauvegarde vers le fichier image "file.bmp".

Point

L'instruction
A=(x,y)
Point(A)
place le point A de coordonnées x et y.
On peut utiliser les options:
  • fill="color", où color=blue, red, black, yellow… un nom d'une couleur
  • PointSize=n, où le nombre entier n est la taille, en pixels, du point.

Point est la fonction graphique de base. Elle peut être utilisée avec diverses syntaxes, pour afficher le point de coordonnées (x,y),
Point(x,y)
, ou encore
A=(x,y);Point(A)
, ou encore
Point(x,y,3,"blue")
pour placer un point en (x,y) de 3 pixels colorés en bleu.

Points

L'instruction
Points(A,B,C,…)
permet de placer les points A,B,C
Les options, fill et PointSize, sont les même que pour Point.

Line

L'instruction
A=(xA,yA)
B=(xB,yB)
Line(A,B)
trace le segment [A;B].
On peut utiliser optionnellement
  • fill="color", où color=blue, red, black, yellow… un nom d'une couleur
  • width=n, où le nombre entier n est l'épaisseur, en pixels, du segment.

Lines

L'instruction
Lines(A,B,C,…)
trace la ligne brisée reliant les points A,B,C…
Les options, fill et width, sont les même que pour Line.

Vecteur

L'instruction
A=(xA,yA)
B=(xB,yB)
Vector(A,B)
trace le vecteur d'origine A et d'extrémité B.
La syntaxe complète
Vector (A,B,fill="color",width=w,ArrowLength=a,ArrowWidth=b)
permet de préciser la couleur et l'épaisseur des traits, ainsi que la largeur de la flèche et sa longeur.
Par défaut, Vecteur(A,B) utlise fill="red",width=1,ArrowLength=0.5,ArrowWidth=0.3.
Voir les explications géométriques correspondantes.

Polygone

L'instruction
Polygon(A,B,C,…)
trace le polygone dont les sommets sont A,B,C….
On peut spécifier optionnellement
  • outline="color" et width=w: la couleur et l'épaisseur des traits formant la bordure du polygone
  • fill="color": la couleur de l'intérieur du polygone

Circle

L'instruction
Circle(A,R)
trace le cercle de centre A et de rayon R. On peut spécifier optionnellement, comme pour les polygones,
  • outline="color" et width=w: la couleur et l'épaisseur des traits formant la bordure du polygone
  • fill="color": la couleur de l'intérieur du polygone

Axes

L'instruction
Axes(xtick,ytick)
place les axes du graphiques, xtick et ytick étant les pas des graduations utilisées sur chaque axe. Par défaut, 10 graduations parcourent chaque axe.

Grille

L'instruction
Grid(Dx,Dy)
trace une grille, ou quadrillage, sur le graphique, Dx et Dy étant le pas en abscisse et ordonnée. Par défaut, si des axes ont déjà étaient tracés avec Axes(), le quadrillage suit leur graduation, sinon, le quadrillage repose sur 10 graduations selon chaque axe.

Text

L'instruction
Text (A,txt,fill="color")
place le texte txt au point A. Le texte est écrit de la couleur "color", par défaut fill="black".

Couleurs

L'option fill permet d'indiquer la couleur de l'élément géométrique correspondant. On peut utiliser certaines couleurs par leur nom: black, white, red, blue, green, gray, chocolate, brown, yellow, orange, cyan indigo, pink, purple, darkred, darkblue, darkgreen ou encore pour les plus usuelles par leur initiale: k (black), w (white), r (red), b (blue), g (green), y (yellow), o (orange), c (chocolate), i (indigo), p (pink).
Les couleurs peuvent aussi être définies directement en RGB: un triplet (r,g,b) de nombres entiers compris 0 et 255, r représentant l'intensité du rouge, b du bleu et g du vert.

Par exemple,
A=(-1,-1);B=(2,3);C=(-4,5)
Polygon(A,B,C,outline="i",width=4,fill="c")
trace un triangle dont les côtés sont des segments couleur "indigo" d'épaisseur 4 pixels et d'intérieur couleur "chocolat".

Exemples

Exemples de représentations géométriques

Tracer de la courbe représentative d'une fonction

On peut simplement utiliser la fonction Point pour représenter graphiquement un ensemble de points appartenant à la courbe représentative d'une fonction.
from Libxy import *
InitGraph ()

def f(x):
    return x**3+3*x**2

n=1000
for i in range (n):
    x=-10+i*20.0/n
    M=(x,f (x))
    Point (M)

Axes ();Grid ()
SaveGraph ()
Télécharger le programme .

Intégration - Méthode des rectangles

Méthode des rectangles pour l'approximation de l'intégrale de la fonction carré sur l'intervalle [-1;2]; voir pour d'autres méthodes numériques.
Bien sûr, le calcul de l'approxmation numérique ne nécessite pas en lui-même de représentation graphique, mais celle-ci permet de visualiser et de comprendre la méthode.
from Libxy import *
a=-1.0
b=2.0
n=50 # nbre de rectangles
Xmin=-2.0;Xmax=3.0
Ymin=-1.0;Ymax=4.0
InitGraph (Xmin,Xmax,Ymin,Ymax)
def f(x):
    return x*x

N=1000
for i in range (N):
    x=Xmin+i*(Xmax-Xmin)/N
    Point ((x,f (x)),fill="red")
Axes ();Grid ()
dx=(b-a)/n
s=0
for i in range (n):
    x=a+i*dx
    s=s+dx*f(x)
    A=(x,0);B=(x+dx,0)
    C=(x+dx,f(x));D=(x,f(x))
    Polygon([A,B,C,D],outline="black",fill="green")

print("Int f ~ "+str(s))
SaveGraph ()
Télécharger le programme .

Fractale de Serpinski

from random import random
from LibPlot import *
InitGraph (0,1,0,1)

A=(0,0);B=(1,0);C=(0,1)
n=30000
M=(.5,.5)
Points ([A,B,C,M])

def milieux (A,B):
    x=(A[0]+B[0])/2.0
    y=(A[1]+B[1])/2.0
    return (x,y)

for i in range (n):
    r=random ()
    if r <1/3.0:
        M=milieux (A,M)
    elif r <2/3.0:
        M=milieux (B,M)
    else:
        M=milieux (C,M)
    Point (M)

SaveGraph ()
Télécharger le programme .

Fractale de Sierpinski, programmation et animation en javascript avec canvas, lien

Historique de dévelopement - Logs - Pérégrinations

Le développement de cette bibiliothèque est bien sûr jalonné d'idées, encombres, difficultés informatiques de programmation et mathématiques. Cette page relate cet historique.

Problèmes - Bugs - Contact

N'hésitez pas à tout problème, bugs, ou idée(s) de développement.


Voir aussi: