web-dev-qa-db-fra.com

Caractères gras de la police pour l'étiquette des axes LaTeX dans matplotlib

Dans matplotlib vous pouvez mettre en gras le texte d'une étiquette d'axe en

plt.xlabel('foo',fontweight='bold')

Vous pouvez également utiliser LaTeX avec le bon backend

plt.xlabel(r'$\phi$')

Cependant, lorsque vous les combinez, le texte mathématique n'est plus en gras.

plt.xlabel(r'$\phi$',fontweight='bold')

Les commandes LaTeX suivantes ne semblent pas non plus avoir d'effet

plt.xlabel(r'$\bf \phi$')
plt.xlabel(r'$\mathbf{\phi}$')

Comment puis-je créer un $\phi$ en gras dans mon étiquette d'axe?

24
Hooked

Malheureusement, vous ne pouvez pas utiliser de caractères gras dans les symboles en gras. Voir cette question sur tex.stackexchange 

Comme le suggère la réponse, vous pouvez utiliser \boldsymbol en gras phi:

r'$\boldsymbol{\phi}$'

Vous devrez charger amsmath dans le préambule de TeX:

matplotlib.rc('text', usetex=True)
matplotlib.rcParams['text.latex.preamble']=[r"\usepackage{amsmath}"]
20
Andy Hayden

Si vous avez l'intention d'avoir des polices systématiquement en gras dans le graphique, le meilleur moyen peut être d'activer le latex et d'ajouter \boldmath à votre préambule:

# Optionally set font to Computer Modern to avoid common missing font errors
matplotlib.rc('font', family='serif', serif='cm10')

matplotlib.rc('text', usetex=True)
matplotlib.rcParams['text.latex.preamble'] = [r'\boldmath']

Ensuite, vos étiquettes d'axe ou de figure peuvent avoir une expression mathématique mathématique tout en restant audacieuses:

plt.xlabel(r'$\frac{\phi + x}{2}$')

Cependant, pour les portions d'étiquettes non mathématiques, vous devez les définir explicitement en gras:

plt.ylabel(r'\textbf{Counts of} $\lambda$'}
15
drs

Comme cette réponse Latex sur python:\alpha et\beta ne fonctionnent pas? fait remarquer. Vous pourriez avoir un problème avec \b, donc \boldsymbol risque de ne pas fonctionner comme prévu Dans ce cas, vous pouvez utiliser quelque chose comme: '$ \\\boldsymbol{\\\beta} $' dans votre code python. Si vous utilisez le préambule plt.rcParams['text.latex.preamble']=[r"\usepackage{amsmath}"]

0
CJD