Noter
Cliquez ici pour télécharger l'exemple de code complet
Propriétés et mise en page du texte #
Contrôler les propriétés du texte et sa mise en page avec Matplotlib.
matplotlib.text.Text
les instances ont une variété de propriétés qui peuvent être configurées via des arguments de mot-clé à set_title
, set_xlabel
,
text
, etc.
Propriété |
Type de valeur |
---|---|
alpha |
|
Couleur de l'arrière plan |
n'importe quelle couleur matplotlib |
bbox |
|
clip_box |
une instance matplotlib.transform.Bbox |
clip_on |
bourdonner |
clip_path |
|
Couleur |
n'importe quelle couleur matplotlib |
famille |
[ |
propriétés de la police |
|
alignement horizontal ou ha |
[ |
étiquette |
n'importe quelle chaîne |
interligne |
|
multialignement |
[ |
nom ou nom de police |
chaîne par exemple, [ |
cueilleur |
[Aucun|float|bool|appelable] |
position |
(x, y) |
rotation |
[ angle en degrés | |
taille ou taille de police |
[ taille en points | taille relative, par exemple, |
style ou style de police |
[ |
texte |
chaîne ou quoi que ce soit d'imprimable avec la conversion '%s' |
transformer |
|
une variante |
[ |
alignement vertical ou va |
[ |
visible |
bourdonner |
poids ou épaisseur de police |
[ |
X |
|
y |
|
zorder |
n'importe quel chiffre |
Vous pouvez disposer du texte avec les arguments d'alignement
horizontalalignment
, verticalalignment
et
multialignment
. horizontalalignment
contrôle si l'argument de position x pour le texte indique le côté gauche, central ou droit du cadre de délimitation du texte. verticalalignment
contrôle si l'argument de position y pour le texte indique le bas, le centre ou le haut du cadre de délimitation du texte. multialignment
, pour les chaînes séparées par des retours à la ligne uniquement, contrôle si les différentes lignes sont justifiées à gauche, au centre ou à droite. Voici un exemple qui utilise la
text()
commande pour montrer les différentes possibilités d'alignement. L'utilisation de transform=ax.transAxes
dans tout le code indique que les coordonnées sont données par rapport à la boîte englobante des axes, avec (0, 0) étant le coin inférieur gauche des axes et (1, 1) le coin supérieur droit.
import matplotlib.pyplot as plt
import matplotlib.patches as patches
# build a rectangle in axes coords
left, width = .25, .5
bottom, height = .25, .5
right = left + width
top = bottom + height
fig = plt.figure()
ax = fig.add_axes([0, 0, 1, 1])
# axes coordinates: (0, 0) is bottom left and (1, 1) is upper right
p = patches.Rectangle(
(left, bottom), width, height,
fill=False, transform=ax.transAxes, clip_on=False
)
ax.add_patch(p)
ax.text(left, bottom, 'left top',
horizontalalignment='left',
verticalalignment='top',
transform=ax.transAxes)
ax.text(left, bottom, 'left bottom',
horizontalalignment='left',
verticalalignment='bottom',
transform=ax.transAxes)
ax.text(right, top, 'right bottom',
horizontalalignment='right',
verticalalignment='bottom',
transform=ax.transAxes)
ax.text(right, top, 'right top',
horizontalalignment='right',
verticalalignment='top',
transform=ax.transAxes)
ax.text(right, bottom, 'center top',
horizontalalignment='center',
verticalalignment='top',
transform=ax.transAxes)
ax.text(left, 0.5*(bottom+top), 'right center',
horizontalalignment='right',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(left, 0.5*(bottom+top), 'left center',
horizontalalignment='left',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(0.5*(left+right), 0.5*(bottom+top), 'middle',
horizontalalignment='center',
verticalalignment='center',
fontsize=20, color='red',
transform=ax.transAxes)
ax.text(right, 0.5*(bottom+top), 'centered',
horizontalalignment='center',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(left, top, 'rotated\nwith newlines',
horizontalalignment='center',
verticalalignment='center',
rotation=45,
transform=ax.transAxes)
ax.set_axis_off()
plt.show()
Police par défaut #
La police de base par défaut est contrôlée par un ensemble de rcParams. Pour définir la police des expressions mathématiques, utilisez les rcParams commençant par mathtext
(voir mathtext ).
rcParam |
usage |
---|---|
|
Liste des familles de polices (installées sur la machine de l'utilisateur) et/ou . |
|
Le style par défaut, ex |
|
Variante par défaut, ex |
|
Étirement par défaut, ex |
|
Poids par défaut. Chaîne ou entier |
|
Taille de police par défaut en points. Les tailles de police relatives ( |
Matplotlib peut utiliser des familles de polices installées sur l'ordinateur de l'utilisateur, c'est-à-dire Helvetica, Times, etc. Les familles de polices peuvent également être spécifiées avec des alias de famille générique comme ( ).{'cursive', 'fantasy', 'monospace',
'sans', 'sans serif', 'sans-serif', 'serif'}
Noter
Pour accéder à la liste complète des polices disponibles :
matplotlib.font_manager.get_font_names()
Le mappage entre les alias de familles génériques et les familles de polices réelles (mentionnés dans rcParams par défaut ) est contrôlé par les rcParams suivants :
Alias de famille générique basé sur CSS |
rcParam avec mappages |
---|---|
|
|
|
|
|
|
|
|
|
|
Si l'un des noms de famille génériques apparaît dans 'font.family'
, nous remplaçons cette entrée par toutes les entrées du mappage rcParam correspondant. Par exemple:
matplotlib.rcParams['font.family'] = ['Family1', 'serif', 'Family2']
matplotlib.rcParams['font.serif'] = ['SerifFamily1', 'SerifFamily2']
# This is effectively translated to:
matplotlib.rcParams['font.family'] = ['Family1', 'SerifFamily1', 'SerifFamily2', 'Family2']
Texte avec des glyphes non latins #
Depuis la v2.0, la police par défaut , DejaVu, contient des glyphes pour de nombreux alphabets occidentaux, mais pas d'autres scripts, tels que le chinois, le coréen ou le japonais.
Pour définir la police par défaut sur celle qui prend en charge les points de code dont vous avez besoin, ajoutez le nom de la police à 'font.family'
(recommandé) ou aux listes d'alias souhaitées.
# first method
matplotlib.rcParams['font.family'] = ['Source Han Sans TW', 'sans-serif']
# second method
matplotlib.rcParams['font.family'] = ['sans-serif']
matplotlib.rcParams['sans-serif'] = ['Source Han Sans TW', ...]
Les listes d'alias de famille génériques contiennent des polices qui sont soit livrées avec Matplotlib (elles ont donc 100 % de chances d'être trouvées), soit des polices qui ont une très forte probabilité d'être présentes dans la plupart des systèmes.
Une bonne pratique lors de la définition de familles de polices personnalisées consiste à ajouter une famille générique à la liste des familles de polices en dernier recours.
Vous pouvez également le définir dans votre .matplotlibrc
fichier :
font.family: Source Han Sans TW, Arial, sans-serif
Pour contrôler la police utilisée par artiste, utilisez les arguments de mot-clé name , fontname ou fontproperties documentés ci- dessus .
Sous Linux, fc-list peut être un outil utile pour découvrir le nom de la police ; par exemple
$ fc-list :lang=zh family
Noto to Sans Mono CJK TC,Noto Sans Mono CJK TC Bold
Noto Sans CJK TC,Noto Sans CJK TC Medium
Noto Sans CJK TC,Noto Sans CJK TC DemiLight
Noto Sans CJK KR,Noto Sans CJK KR Black
Noto Sans CJK TC,Noto Sans CJK TC Black
Noto Sans Mono CJK TC,Noto Sans Mono CJK TC Regular
Noto Sans CJK SC,Noto Sans CJK SC Light
répertorie toutes les polices prenant en charge le chinois.