Proprietà del testo e layout #

Controllo delle proprietà del testo e del suo layout con Matplotlib.

matplotlib.text.Textle istanze hanno una varietà di proprietà che possono essere configurate tramite argomenti di parole chiave a set_title, set_xlabel, text, ecc.

Proprietà

Tipo di valore

alfa

float

colore di sfondo

qualsiasi colore matplotlib

bbox

Rectangleprop dict plus key 'pad'che è un pad in punti

clip_box

un'istanza matplotlib.transform.Bbox

clip_on

bool

percorso_clip

un'istanza Pathe Transformun'istanza, aPatch

colore

qualsiasi colore matplotlib

famiglia

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

fontproperties

FontProperties

allineamento orizzontale o ha

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

etichetta

qualsiasi stringa

Interlinea

float

multiallineamento

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

nome o nome carattere

stringa ad esempio, [ 'Sans'| 'Courier'| 'Helvetica'...]

raccoglitore

[Nessuno|float|bool|chiamabile]

posizione

(x, y)

rotazione

[ angolo in gradi | 'vertical'| 'horizontal']

dimensione o dimensione del carattere

[ dimensione in punti | dimensione relativa, ad esempio, 'smaller', 'x-large']

stile o fontstyle

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

testo

stringa o qualsiasi cosa stampabile con la conversione '%s'

trasformare

Transformsottoclasse

variante

[ 'normal'| 'small-caps']

allineamento verticale o va

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

visibile

bool

peso o fontweight

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

X

float

si

float

zordine

qualsiasi numero

È possibile disporre il testo con gli argomenti di allineamento horizontalalignment, verticalalignmente multialignment. horizontalalignmentcontrolla se l'argomento posizionale x per il testo indica il lato sinistro, centrale o destro del riquadro di delimitazione del testo. verticalalignmentcontrolla se l'argomento posizionale y per il testo indica il lato inferiore, centrale o superiore del riquadro di delimitazione del testo. multialignment, solo per le stringhe separate da una nuova riga, controlla se le diverse righe sono giustificate a sinistra, al centro oa destra. Ecco un esempio che utilizza il text()comando per mostrare le varie possibilità di allineamento. L'uso di transform=ax.transAxesin tutto il codice indica che le coordinate sono date rispetto al riquadro di delimitazione degli assi, dove (0, 0) è l'angolo inferiore sinistro degli assi e (1, 1) quello superiore destro.

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()
oggetti di scena del testo

Carattere predefinito #

Il font predefinito di base è controllato da un set di rcParams. Per impostare il font per le espressioni matematiche, usa rcParams che inizia con mathtext (vedi mathtext ).

rcParam

utilizzo

'font.family'

Elenco delle famiglie di font (installate sulla macchina dell'utente) e/o .{'cursive', 'fantasy', 'monospace', 'sans', 'sans serif', 'sans-serif', 'serif'}

'font.style'

Lo stile predefinito, ex 'normal', 'italic'.

'font.variant'

Variante predefinita, ex 'normal', 'small-caps' (non testata)

'font.stretch'

Allungamento predefinito, ex 'normal', 'condensed' (incompleto)

'font.weight'

Peso predefinito. Stringa o numero intero

'font.size'

Dimensione carattere predefinita in punti. Le dimensioni relative dei caratteri ( 'large', 'x-small') vengono calcolate in base a questa dimensione.

Matplotlib può utilizzare le famiglie di caratteri installate sul computer dell'utente, ad esempio Helvetica, Times, ecc. Le famiglie di caratteri possono anche essere specificate con alias di famiglia generica come ( ).{'cursive', 'fantasy', 'monospace', 'sans', 'sans serif', 'sans-serif', 'serif'}

Nota

Per accedere all'elenco completo dei font disponibili:

matplotlib.font_manager.get_font_names()

La mappatura tra gli alias di famiglia generici e le famiglie di font effettive (menzionate in default rcParams ) è controllata dai seguenti rcParams:

Alias ​​di famiglia generica basato su CSS

rcParam con mappature

'serif'

'font.serif'

'monospace'

'font.monospace'

'fantasy'

'font.fantasy'

'cursive'

'font.cursive'

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

'font.sans-serif'

Se uno qualsiasi dei nomi di famiglia generici appare in 'font.family', sostituiamo quella voce con tutte le voci nella mappatura rcParam corrispondente. Per esempio:

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']

Testo con glifi non latini #

A partire dalla versione 2.0 il carattere predefinito , DejaVu, contiene glifi per molti alfabeti occidentali, ma non altri script, come cinese, coreano o giapponese.

Per impostare il carattere predefinito in modo che supporti i punti di codice necessari, anteporre il nome del carattere a 'font.family'(consigliato) o agli elenchi di alias desiderati.

# 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', ...]

Gli elenchi di alias di famiglia generici contengono caratteri che vengono spediti insieme a Matplotlib (quindi hanno il 100% di possibilità di essere trovati) o caratteri che hanno un'alta probabilità di essere presenti nella maggior parte dei sistemi.

Una buona pratica quando si impostano famiglie di font personalizzate consiste nell'aggiungere una famiglia generica all'elenco delle famiglie di font come ultima risorsa.

Puoi anche impostarlo nel tuo .matplotlibrcfile:

font.family: Source Han Sans TW, Arial, sans-serif

Per controllare il carattere utilizzato in base all'artista, utilizzare gli argomenti della parola chiave name , fontname o fontproperties documentati sopra .

Su Linux, fc-list può essere uno strumento utile per scoprire il nome del font; Per esempio

$ 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

elenca tutti i caratteri che supportano il cinese.

Galleria generata da Sphinx-Gallery