2010-03-29 8 views
18

następujący skrypt:bezszeryfowa matematyka z lateksu w matplotlib

import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as mpl 

mpl.rc('font', family='sans-serif') 
mpl.rc('text', usetex=True) 

fig = mpl.figure() 
ax = fig.add_subplot(1,1,1) 
ax.text(0.2,0.5,r"Math font: $451^\circ$") 
ax.text(0.2,0.7,r"Normal font (except for degree symbol): 451$^\circ$") 

fig.savefig('test.png') 

jest próbą użyć czcionki bezszeryfowej w matplotlib z lateksu. Problem polega na tym, że czcionka matematyczna jest nadal czcionką szeryfową (jak wskazują numery osi i jak pokazują etykiety w środku). Czy istnieje sposób na ustawienie czcionki matematycznej na sans-serif?

+3

'r "$ \ mathsf {451^\ circ} $"'? – kennytm

+0

Zobacz http://stackoverflow.com/questions/17958485/matplotlib-not-using-latex-font-while-tex-usetex-true/17967324?noredirect=1#17967324 – Dirklinux

+0

robi moją odpowiedź poniżej pracy? –

Odpowiedz

19

zawsze mam text.usetex = True w moim pliku matplotlibrc. Oprócz tego używam tego również:

mpl.rcParams['text.latex.preamble'] = [ 
     r'\usepackage{siunitx}', # i need upright \micro symbols, but you need... 
     r'\sisetup{detect-all}', # ...this to force siunitx to actually use your fonts 
     r'\usepackage{helvet}', # set the normal font here 
     r'\usepackage{sansmath}', # load up the sansmath so that math -> helvet 
     r'\sansmath'    # <- tricky! -- gotta actually tell tex to use! 
] 

Nadzieję, że pomaga.

+0

To jest dokładnie to, czego potrzebowałem, aby uzyskać (słowo kluczowe :) czcionka Helvetica współpracująca z matplotlib/pylab w moich działkach. I próbowałem kilku rzeczy! Mam nadzieję, że Google będzie indeksować to, przy czym inni próbują zrobić to samo. – SullX

+1

Idealny. Aby uzyskać więcej opcji czcionek, spójrz na http://www.tug.dk/FontCatalogue/sansseriffonts.html i zastąp "\ usepackage {helvet}" swojemu ulubionemu :) – np8

12

Najprostszym sposobem jest użycie wewnętrznego TeX matplotlib'S, np

import pylab as plt 
params = {'text.usetex': False, 'mathtext.fontset': 'stixsans'} 
plt.rcParams.update(params) 

Jeśli używasz zewnętrznego latex, można użyć, na przykład, cm Jasne czcionek:

params = {'text.usetex': True, 
      'text.latex.preamble': [r'\usepackage{cmbright}', r'\usepackage{amsmath}']} 
plt.rcParams.update(params) 

uwaga, że czcionka CM Bright nie jest skalowalna, a zapisanie plików PDF/PS nie będzie możliwe! To samo dotyczy innych opcji z zewnętrznym LaTeXem, które znalazłem do tej pory.

+0

Jak usunąć kursywę z wewnętrznego TeX-a matplotlib? – Ger

1

To pozwoli Ci wykorzystać czcionkę Computer Modern Sans jeśli, tak jak ja, wolą go Helvetica:

mpl.rcParams['text.usetex'] = True 
mpl.rcParams['text.latex.preamble'] = [r'\usepackage[cm]{sfmath}'] 
mpl.rcParams['font.family'] = 'sans-serif' 
mpl.rcParams['font.sans-serif'] = 'cm' 
+0

To zadziałało dla mnie i starałem się znaleźć to, co nowoczesne komputery nazywały się w backendach. Nigdzie nie mogłem znaleźć listy. – user3087409

Powiązane problemy