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.Textles 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

float

Couleur de l'arrière plan

n'importe quelle couleur matplotlib

bbox

Rectangleprop dict plus key 'pad'qui est un pad en points

clip_box

une instance matplotlib.transform.Bbox

clip_on

bourdonner

clip_path

une Pathinstance et une Transforminstance, unPatch

Couleur

n'importe quelle couleur matplotlib

famille

[ 'serif'| 'sans-serif'| 'cursive'| 'fantasy'| 'monospace']

propriétés de la police

FontProperties

alignement horizontal ou ha

[ 'center'| 'right'| 'left']

étiquette

n'importe quelle chaîne

interligne

float

multialignement

[ 'left'| 'right'| 'center']

nom ou nom de police

chaîne par exemple, [ 'Sans'| 'Courier'| 'Helvetica'...]

cueilleur

[Aucun|float|bool|appelable]

position

(x, y)

rotation

[ angle en degrés | 'vertical'| 'horizontal']

taille ou taille de police

[ taille en points | taille relative, par exemple, 'smaller', 'x-large']

style ou style de police

[ 'normal'| 'italic'| 'oblique']

texte

chaîne ou quoi que ce soit d'imprimable avec la conversion '%s'

transformer

Transformsous-classe

une variante

[ 'normal'| 'small-caps']

alignement vertical ou va

[ 'center'| 'top'| 'bottom'| 'baseline']

visible

bourdonner

poids ou épaisseur de police

[ 'normal'| 'bold'| 'heavy'| 'light'| 'ultrabold'| 'ultralight']

X

float

y

float

zorder

n'importe quel chiffre

Vous pouvez disposer du texte avec les arguments d'alignement horizontalalignment, verticalalignmentet multialignment. horizontalalignmentcontrô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. verticalalignmentcontrô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.transAxesdans 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()
accessoires de texte

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

'font.family'

Liste des familles de polices (installées sur la machine de l'utilisateur) et/ou .{'cursive', 'fantasy', 'monospace', 'sans', 'sans serif', 'sans-serif', 'serif'}

'font.style'

Le style par défaut, ex 'normal', 'italic'.

'font.variant'

Variante par défaut, ex 'normal', 'small-caps' (non testée)

'font.stretch'

Étirement par défaut, ex 'normal', 'condensed' (incomplet)

'font.weight'

Poids par défaut. Chaîne ou entier

'font.size'

Taille de police par défaut en points. Les tailles de police relatives ( 'large', 'x-small') sont calculées par rapport à cette taille.

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

'serif'

'font.serif'

'monospace'

'font.monospace'

'fantasy'

'font.fantasy'

'cursive'

'font.cursive'

{'sans', 'sans serif', 'sans-serif'}

'font.sans-serif'

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 .matplotlibrcfichier :

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.

Galerie générée par Sphinx-Gallery