Sto cercando un modo carino per ottenere il nome del carattere predefinito che viene utilizzato da matplotlib.pyplot. documentation indica che il carattere è selezionato dall'elenco in rcParams ['font.family'] che è ordinato dall'alto in basso per priorità. Il mio primo tentativo è stato quello di verificare la presenza di avvertimenti, vale a dire,Scopri quale carattere usa matplotlib
import matplotlib.pyplot as plt
import warnings
for font in plt.rcParams['font.sans-serif']:
print font
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
plt.rcParams['font.family'] = font
plt.text(0,0,font)
plt.savefig(font+'.png')
if len(w):
print "Font {} not found".format(font)
che mi dà
Bitstream Vera Sans
Font Bitstream Vera Sans not found
DejaVu Sans
Lucida Grande
Font Lucida Grande not found
Verdana
Geneva
Font Geneva not found
Lucid
Font Lucid not found
Arial
Helvetica
Font Helvetica not found
Avant Garde
Font Avant Garde not found
sans-serif
posso dire che su questa macchina, DejaVu Sans è usato da matplotlib.pyplot. Tuttavia, ho pensato che ci dovrebbe essere un modo più semplice per ottenere queste informazioni.
Edit:
L'avviso può essere attivato direttamente tramite
matplotlib.font_manager.findfont(matplotlib.font_manager.FontProperties(family=font))
Questo mi dà 'Arial'. findfont restituirà semplicemente il file di font che corrisponde strettamente all'oggetto fontproperty dato. – alodi
Bene, ho pensato che il tuo problema è determinare il font se è "unset", come "sans-serif". Poiché altrimenti si usa semplicemente 'matplotlib.rcParams ['font.family']' – tamasgal
Hai capito correttamente la domanda. Sto cercando di trovare il font non specificato che si nasconde dietro 'sans-serif'. Ma il tuo codice mi dà 'Arial' invece di' DejaVu Sans'. – alodi