it-swarm.dev

Pogrubiona waga czcionki dla etykiety osi LaTeX w matplotlib

W matplotlib możesz pogrubić tekst etykiety osi

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

Możesz również użyć LaTeX z odpowiednim zapleczem

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

Po ich połączeniu tekst matematyczny nie jest już pogrubiony

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

Poniższe polecenia LaTeX również nie działają

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

Jak mogę zrobić pogrubioną czcionkę $\phi$ w mojej etykiecie osi?

24
Hooked

Niestety nie można pogrubić symboli za pomocą pogrubionej czcionki, patrz to pytanie na tex.stackexchange. 

Jak sugeruje odpowiedź, możesz użyć \boldsymbol do pogrubienia phi:

r'$\boldsymbol{\phi}$'

Musisz załadować zmienną amsmath do preambuły TeX:

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

Jeśli zamierzasz konsekwentnie pogrubiać czcionki na całym wykresie, najlepszym sposobem może być włączenie latexu i dodanie \boldmath do swojej preambuły:

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

Wtedy twoje etykiety osi lub figury mogą mieć dowolną matematyczną ekspresję lateksu i nadal być pogrubione:

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

Jednak w przypadku części etykiet, które nie są matematyczne, należy jawnie ustawić je jako pogrubione:

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

Jak ta odpowiedź Latex na python: alfa i beta nie działają? zwraca uwagę. Możesz mieć problem z \b, więc \boldsymbol może nie działać zgodnie z oczekiwaniami. W takim przypadku możesz użyć czegoś takiego: '$ \\\boldsymbol{\\\beta} $' w kodzie Pythona. Pod warunkiem, że używasz preambuły plt.rcParams['text.latex.preamble']=[r"\usepackage{amsmath}"]

0
CJD