Nota
Fare clic qui per scaricare il codice di esempio completo
Proprietà del testo e layout #
Controllo delle proprietà del testo e del suo layout con Matplotlib.
matplotlib.text.Text
le 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 |
|
colore di sfondo |
qualsiasi colore matplotlib |
bbox |
|
clip_box |
un'istanza matplotlib.transform.Bbox |
clip_on |
bool |
percorso_clip |
|
colore |
qualsiasi colore matplotlib |
famiglia |
[ |
fontproperties |
|
allineamento orizzontale o ha |
[ |
etichetta |
qualsiasi stringa |
Interlinea |
|
multiallineamento |
[ |
nome o nome carattere |
stringa ad esempio, [ |
raccoglitore |
[Nessuno|float|bool|chiamabile] |
posizione |
(x, y) |
rotazione |
[ angolo in gradi | |
dimensione o dimensione del carattere |
[ dimensione in punti | dimensione relativa, ad esempio, |
stile o fontstyle |
[ |
testo |
stringa o qualsiasi cosa stampabile con la conversione '%s' |
trasformare |
|
variante |
[ |
allineamento verticale o va |
[ |
visibile |
bool |
peso o fontweight |
[ |
X |
|
si |
|
zordine |
qualsiasi numero |
È possibile disporre il testo con gli argomenti di allineamento
horizontalalignment
, verticalalignment
e
multialignment
. horizontalalignment
controlla se l'argomento posizionale x per il testo indica il lato sinistro, centrale o destro del riquadro di delimitazione del testo. verticalalignment
controlla 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.transAxes
in 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()
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 |
---|---|
|
Elenco delle famiglie di font (installate sulla macchina dell'utente) e/o . |
|
Lo stile predefinito, ex |
|
Variante predefinita, ex |
|
Allungamento predefinito, ex |
|
Peso predefinito. Stringa o numero intero |
|
Dimensione carattere predefinita in punti. Le dimensioni relative dei caratteri ( |
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 |
---|---|
|
|
|
|
|
|
|
|
|
|
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 .matplotlibrc
file:
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.