web-dev-qa-db-fra.com

Comment changer les polices dans matplotlib (python)?

Cela semble être un problème facile, mais je ne trouve aucune solution efficace pour changer la police (pas la taille de la police) dans un graphique créé avec matplotlib en python.

J'ai trouvé quelques tutoriels pour changer la police par défaut de matplotlib en modifiant certains fichiers des dossiers dans lesquels matplotlib stocke sa police par défaut - voir cet article de blog - mais je recherche une solution moins radicale puisque je souhaite utiliser plusieurs polices dans mon tracé (texte, libellé, libellé d'axe, etc.).

52
SirC

Disons que vous voulez Comic Sans pour le titre et Helvetica pour le label x.

csfont = {'fontname':'Comic Sans MS'}
hfont = {'fontname':'Helvetica'}

plt.title('title',**csfont)
plt.xlabel('xlabel', **hfont)
plt.show()
68
aidnani8

Vous pouvez également utiliser rcParams pour changer la famille de polices globalement.

 import matplotlib.pyplot as plt
 plt.rcParams["font.family"] = "cursive"
 # This will change to your computer's default cursive font

La liste des arguments de la famille de polices de matplotlib est ici .

36
morepenguins

Je préfère employer:

from matplotlib import rc
#rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
rc('font',**{'family':'serif','serif':['Times']})
rc('text', usetex=True)
6
guhur
import pylab as plb
plb.rcParams['font.size'] = 12

ou

import matplotlib.pyplot as mpl
mpl.rcParams['font.size'] = 12
3
nagordon

La police Helvetica n’est pas fournie avec Windows. Pour l’utiliser, vous devez la télécharger au format .ttf. Ensuite, vous pouvez vous référer à matplotlib comme ceci (remplacez "crm10.ttf" par votre fichier):

import os
from matplotlib import font_manager as fm, rcParams
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

fpath = os.path.join(rcParams["datapath"], "fonts/ttf/cmr10.ttf")
prop = fm.FontProperties(fname=fpath)
fname = os.path.split(fpath)[1]
ax.set_title('This is a special font: {}'.format(fname), fontproperties=prop)
ax.set_xlabel('This is the default font')

plt.show()

print(fpath) va vous montrer où vous devez mettre le .ttf.

Vous pouvez voir la sortie ici: https://matplotlib.org/gallery/api/font_file.html

1
bPiMin