> Modules non standards > Matplotlib > Dessin sous matplotlib
Dessin sous matplotlib
Dessin de lignes sous matplotlib :
- axes.add_artist(matplotlib.lines.Line2D((0, 1), (0, 2), color = 'red')) : trace une ligne en donnant les coordonnées des points extrèmes (x1, x2) et (y1, y2), donc ici entre le point de coordonnées (0, 0) et le point de coordonnées (1, 2). Attention, ce n'est pas dans l'ordre habituel ! (d'abord les x, puis les y).
- paramètres :
- color = 'red' : couleur du trait.
- linewidth = 5 : largeur du trait.
- linestyle = 'dotted' : style du trait (valeurs possibles : 'solid', 'dashed', 'dashdot', 'dotted').
- solid_capstyle = 'projecting' : la largeur du trait vient se rajouter au bout de celui-ci, donc il est un peu plus long ! C'est le défaut.
- solid_capstyle = 'round' : comme projecting, mais la fin est arrondie.
- solid_capstyle = 'butt' : bout carré qui se termine exactement à la position souhaitée.
- marker = 'D' : indique de mettre un symbole aux extrémités de la ligne.
- markersize = 15 : taille du marqueur s'il y en a un.
- markerfacecolor = 'yellow' : la couleur du marqueur (l'intérieur).
- markeredgecolor = 'cyan' : la couleur des bordures du marqueur.
- markeredgewidth = 3 : l'épaisseur des bordures du marqueur.
Exemple de dessin avec des lignes :
import math
pyplot.figure(figsize = (8, 8))
axes = pyplot.gca()
for theta in range(0, 180, 10):
thetaRad = theta * math.pi / 180
x1 = math.cos(thetaRad)
y1 = math.sin(thetaRad)
x2 = - math.cos(thetaRad)
y2 = - math.sin(thetaRad)
axes.add_artist(matplotlib.lines.Line2D((x1, x2), (y1, y2),
color = 'red', linewidth = 5,
linestyle = 'dotted', marker = 'D',
markeredgecolor = 'cyan', markeredgewidth = 3,
markerfacecolor = 'yellow', markersize = 15))
axes.set_xlim(-1, 1)
axes.set_ylim(-1, 1)
Dessin de rectangles sous matplotlib :
- axes.add_artist(matplotlib.patches.Rectangle((0.2, 0.2), 0.4, 0.3, color = 'magenta')) : ajout d'un rectangle en donnant les cooordonnées (x, y) du coin inférieur gauche (ici(0.2, 0.2)), la largeur et la hauteur (ici 0.4 et 0.3 respectivement), et des paramètres, ici seulement la couleur.
- les coordonnées sont entre 0 et 1 par défaut.
- paramètres :
- edgecolor = 'black' : la couleur de la bordure.
- facecolor = 'yellow' : la couleur de l'intérieur.
- color = 'magenta' : la couleur du rectangle (bords et intérieur). A priorité sur edgecolor et facecolor.
- fill = True : remplit le rectangle (c'est le défaut).
- hatch = '/' : hachures. Valeurs possibles : '/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'.
- linestyle = 'dashed' : style des bordures . Valeurs possibles :'solid', 'dashed', 'dashdot', 'dotted'.
- linewidth = 3 : épaisseur des bordures.
- alpha = 0.7 : la valeur de transparence entre 0 (totalement transparent) et 1 (totalement opaque, le défaut).
- zorder = 2 : l'ordre en terme de profondeur. Les valeurs les plus élevées sont celles qui sont les plus devant. La valeur par défaut est 1. On peut donner des valeurs non entières, ou même négatives.
Dessin de cercles sous matplotlib :
- axes.add_artist(matplotlib.patches.Circle((0.5, 0.6), 0.15, color = 'magenta')) : on donne les coordonnées du centre (ici (0.5, 0.5)) et le rayon (ici 0.2).
- les paramètres sont les mêmes que pour Rectangle (voir-ci dessus).
Dessin d'ellipses sous matplotlib :
- axes.add_artist(matplotlib.patches.Ellipse((0.2, 0.7), 0.3, 0.2, 45)) : on donne les coordonnées du centre (ici (0.2, 0.7)), la largeur (ici 0.3), la hauteur (ici 0.2) et l'angle de rotation en degrés dans le sens trigonométrique (ici 45).
Dessin d'arcs sous matplotlib :
- axes.add_artist(matplotlib.patches.Arc((0.7, 0.7), 0.3, 0.2, 20, 0, 120)) : on donne les coordonnées du centre, la largeur, la hauteur, l'angle de rotation, l'angle de départ et l'angle d'arrivée (origine sur l'axe des x, dans le sens trigonométrique).
- les arcs ne peuvent pas être remplis.
Exemple de dessin :
from matplotlib import patches
figure = pyplot.figure(figsize = (10, 10))
# suppression des marges
pyplot.gcf().subplots_adjust(0, 0, 1, 1)
axes = figure.add_subplot(111)
# pas de cadre
axes.set_frame_on(False)
# pas de graduations d'axes
axes.xaxis.set_visible(False)
axes.yaxis.set_visible(False)
axes.add_artist(
patches.Rectangle((0.2, 0.2), 0.4, 0.3,
edgecolor = 'black', facecolor = 'orange',
fill = True, hatch = '/', linestyle = 'dashed',
linewidth = 3, zorder = 1))
axes.add_artist(
patches.Rectangle((0.4, 0.4), 0.5, 0.2,
edgecolor = 'black', facecolor = 'pink',
fill = True, hatch = '|', linestyle = 'dashdot',
linewidth = 3, alpha = 0.7, zorder = 3))
axes.add_artist(
patches.Circle((0.5, 0.6), 0.15, color = 'cyan', zorder = 2))
axes.add_artist(
patches.Ellipse((0.2, 0.7), 0.3, 0.2, 45,
edgecolor = 'magenta', facecolor = 'yellow', zorder = 2))
axes.add_artist(
patches.Arc((0.7, 0.7), 0.3, 0.2, 20, 0, 120, color = 'red', linewidth = 5))
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert