web-dev-qa-db-ja.com

text.usetex == Trueの間にMatplotlibがラテックスフォントを使用しない

Latexコンピューターの最新フォントを使用して、プロットにラベルを作成します。ただし、matplotlibにラテックスフォントを使用させる唯一の方法は、次のようなものを挿入することです。

title(r'$\mathrm{test}$')

もちろんこれはばかげています。ラテックスに数学モードを開始してから、数学モードを一時的に終了して実際の文字列を書き込むように指示します。数式だけでなく、すべてのラベルがラテックスでレンダリングされるようにするにはどうすればよいですか?そして、これがデフォルトの動作になるようにするにはどうすればよいですか?

最小限の作業例は次のとおりです。

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

# use latex for font rendering
mpl.rcParams['text.usetex'] = True


x = np.linspace(-50,50,100)
y = np.sin(x)**2/x
plt.plot(x,y)

plt.xlabel(r'$\mathrm{xlabel\;with\;\LaTeX\;font}$')
plt.ylabel(r'Not a latex font')
plt.show()

これにより、次の結果が得られます。

Plot showing incorrect rendering of latex font types

ここで、x軸はラベルの表示方法です。数学モードに戻って再び戻る必要なく、すべてのラベルがこのように表示されるようにするにはどうすればよいですか?

36
Dirklinux

デフォルトのLatexフォントはComputer Modern

from matplotlib import rc
import matplotlib.pylab as plt

rc('font', **{'family': 'serif', 'serif': ['Computer Modern']})
rc('text', usetex=True)

x = plt.linspace(0,5)
plt.plot(x,plt.sin(x))
plt.ylabel(r"This is $\sin(x)$", size=20)
plt.show()

enter image description here

36
Greg

Mac OSXでmatplotlib 1.3.1を使用しています。matplotlibrcに次の行を追加してください

text.usetex : True
font.family : serif 
font.serif  : cm

=を使用すると、UserWarning: Illegal lineになります

9
CyLiu

マークされた回答は、デフォルトでmatplotlibrcファイルの数行を変更することで有効にできます。

text.usetex = True
font.family = serif 
font.serif = cm
9
Dirklinux