> Modules non standards > Matplotlib > Ajout de texte
Ajout de texte
Différents ajouts de texte sur un graphe ou une figure :
- pyplot.title('titre du graphique') : ajout d'un titre sur un graphe.
- on peut indiquer après coup la taille de la police : myText = pyplot.title('my title'); myText.set_fontsize(16)
- pyplot.suptitle('Sur-titre') : ajout d'un titre à la figure (au-dessus de tous les graphes en principe).
- pyplot.suptitle('Sur-titre', fontsize = 20, x = 0.5, y = 0.995) : on peut choisir sa position (en coordonnées de 0 à 1 sur la figure, origine en bas à gauche) et la taille de la fonte.
- pyplot.xlabel('axe des x') : l'étiquette de l'axe des x (pareil pour l'axe des y avec ylabel).
- pyplot.text(0, 2, r'graphe de (x) = \sqrt{x}$') : ajout de texte à un endroit d'un graphe, en indiquant les coordonnées x et y par rapport à celle du graphe (avec ici une partie écrite en latex entre les deux signes $, pour les formules).
- pyplot.text(1, 2, 'my text', horizontalalignment = 'center', verticalalignment = 'center') : centre le texte sur le point de coordonnées indiquées.
- avec pyplot.text, on ne peut pas afficher une liste de labels en une seule fois avec toutes les coordonnées (par exemple, pour rajouter des étiquettes à des points) : il faut boucler sur les différents labels à ajouter.
- pyplot.figtext(0.1, 0.7, 'texte' : ajout de texte sur la figure avec des coordonnées entre 0 et 1 par rapport à la figure (encadré).
- ax = pyplot.gca(); ax.text(0.1, 0.7, 'my text2', transform = ax.transAxes) : ajout de texte sur la figure avec des coordonnées entre 0 et 1 par rapport à la totalité de l'image.
Principales propriétés pour modifier le texte dans ces différentes fonctions :
- fontsize = 20 : la taille de la police de caractères (sinon, on peut aussi donner 'smaller', 'x-large', ...).
- family = 'serif' : le type de police ('serif', 'sans-serif', 'cursive', 'fantasy', 'monospace').
- fontweight = 'bold' : la graisse de la police ('normal', 'bold', 'heavy', 'light', 'ultrabold', 'ultralight').
- style = 'italic' : le style de la police ('normal', 'italic', 'oblique').
- rotation = 10 : rotation à appliquer au texte (en degrés, dans le sens trigonométrique).
- color = 'red' : la couleur.
- backgroundcolor = 'yellow' : la couleur du fond.
- alpha = 0.5 : pour avoir un texte avec de la transparence (0 = totalement transparent, 1 = totalement opaque).
- horizontalalignment = 'center' (ou encore ha = 'center') : permet de centrer le texte. Valeurs possibles sont 'left', 'center', 'right'. Attention : 'left' veut dire que c'est la partie gauche du texte qui est positionnée au point d'intérêt et donc, elle décale le texte vers la droite !!!
Exemple de graphes avec du texte :
import math
pyplot.suptitle('Titre de la figure', size = 'x-large')
pyplot.subplot(211)
pyplot.title('1er graphique')
pyplot.scatter(range(5), [math.sqrt(x) for x in range(5)])
pyplot.text(0, 2, r'graphe de (x) = \sqrt{x}$',
fontsize = 20, color = 'red', backgroundcolor = 'yellow')
pyplot.subplot(212)
pyplot.title('2eme graphique')
pyplot.hist([math.sqrt(x) for x in range(50)])
pyplot.text(1, 8, 'histogramme ....', style = 'italic',
fontweight = 'bold', fontsize = 20, family = 'serif', rotation = 10)
pyplot.xlabel('valeurs des x')
pyplot.figtext(0.1, 0.7, 'texte sur toute la figure', rotation = -45,
fontsize = 30, color = 'orange', alpha = 0.5, fontweight = 'bold')
Annotations avec des flèches :
- xy = (0, 0) indique les coordonnées de la pointe de la flèche d'annotation, dans le système de coordonnées du graphe.
- xytext = (1, 0) : donne les coordonnées du début du texte lui-même (et du début de la flèche), dans le système de coordonnées du graphe.
- on peut donner des propriétés à la flèche avec l'attribut arrowprops en lui donnant un dictionnaire : arrowprops = {'facecolor': 'yellow', 'width': 3}. Il faut au moins donner la couleur pour avoir une flèche !
- propriétés que l'on peut donner aux flèches :
- 'facecolor': 'yellow' : la couleur de remplissage de la flèche.
- 'edgecolor': 'red' : la couleur des bordures de la flèche.
- 'width': 3 : la largeur du corps de la flèche.
- 'headwidth': 15 : la largeur de la base de tête de la flèche.
- 'frac': 0.2 : la longueur de la tête de la flèche entre 0 et 1 (en pourcentage de la longueur totale du corps de la flèche).
- 'alpha': 0.3 : valeur de transparence de la flèche (0 pour complètement transparent, 1 pour opaque).
- 'shrink': 0.1 : dit de combien le texte doit être éloigné de la flèche (sinon il est collé) et de combien la tête de la flèche doit être éloignée du point indiqué par le paramètre xy.
Systèmes de coordonnées :
- on peut préciser les coordonnées par rapport au système de coordonnées du graphe : c'est le défaut, 'data'.
- xycoords = 'axes fraction' : on peut aussi préciser les coordonnées par rapport au graphe en pourcentage : point en bas à gauche du graphe à (0, 0) et point en haut à droite du graphe à (1, 1) en utilisant xycoords = 'axes fraction'. Par exemple, xycoords = 'axes fraction', xy = (0.5, 0.5) indique le point au centre du graphe.
- xycoords = 'figure fraction' : on peut aussi préciser les coordonnées par rapport à la figure en pourcentage : point en bas à gauche du graphe à (0, 0) et point en haut à droite du graphe à (1, 1) en utilisant xycoords = 'figure fraction'. Par exemple, xycoords = figure fraction', xy = (0.5, 0.5) indique le point au centre du graphe.
- xycoords = 'figure points, par rapport à la figure, mais mesuré en points.
- textcoords : équivalent de xycoords, mais pour xytext (coordonnées du début du texte).
Exemple :
pyplot.suptitle('Titre de la figure', size = 'x-large')
pyplot.subplot(211)
pyplot.title('1er graphique')
pyplot.scatter(range(5), [math.sqrt(x) for x in range(5)])
pyplot.annotate('1er point', xy = (0, 0), xytext = (1, 0),
arrowprops = {'facecolor': 'yellow', 'edgecolor': 'red',
'width': 3, 'headwidth': 15,
'shrink': 0.2}, color = 'green', backgroundcolor = 'pink')
pyplot.annotate('dernier point', xy = (4, 2), xytext = (2, 1),
arrowprops = {'facecolor': 'cyan', 'edgecolor': 'cyan',
'width': 15, 'headwidth': 30, 'shrink': 0.1})
pyplot.subplot(212)
pyplot.title('2eme graphique')
pyplot.hist([math.sqrt(x) for x in range(50)])
pyplot.xlabel('valeurs des x')
pyplot.annotate('valeur moyenne', xy = (4, 8), xytext = (0.7, 0.7),
textcoords = 'figure fraction',
arrowprops = {'color': 'violet', 'width': 15,
'headwidth': 30, 'alpha': 0.3})
Pour modifier les propriétés de la police :
- pyplot.xticks(fontsize = 12, rotation = 90) : pour donner une taille de police et une rotation aux graduations de l'axe des x.
- pyplot.xticks(range(len(lengths)), map(str, lengths), rotation = 90, fontproperties = matplotlib.font_manager.FontProperties(family = 'sans-serif', style = 'italic', weight = 'bold', size = 'x-small'))
Pour rajouter une flèche : pyplot.arrow(startX, startY, lengthX, lengthY, head_width = 0.02, head_length = 0.01)
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert