Matplotlib在text.usetex == True时不使用乳胶字体

Dir*_*nux 36 python latex matplotlib

我想用乳胶电脑现代字体为我的情节创建标签.但是,说服matplotlib使用乳胶字体的唯一方法是插入如下内容:

title(r'$\mathrm{test}$')
Run Code Online (Sandbox Code Playgroud)

这当然是荒谬的,我告诉latex要启动数学模式,然后暂时退出数学模式来编写实际的字符串.如何确保所有标签都以乳胶呈现,而不仅仅是公式?我如何确保这将是默认行为?

最小的工作示例如下:

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()
Run Code Online (Sandbox Code Playgroud)

这给出了以下结果:

绘图显示乳胶字体类型的错误呈现

这里x轴是我想要标签出现的方式.如何确保所有标签都显示为这样,而无需进入数学模式并再次返回?

Gre*_*reg 37

默认的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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 谢谢!默认情况下,可以通过更改matplotlibrc文件来启用此功能.设置:tex.usetex = True font.family = serif font.serif = cm (2认同)

Dir*_*nux 9

默认情况下,通过更改matplotlibrc文件中的几行,可以启用标记的答案:

text.usetex = True
font.family = serif 
font.serif = cm
Run Code Online (Sandbox Code Playgroud)


小智 9

我在Mac OSX上使用matplotlib 1.3.1,matplotlibrc为我添加以下几行

text.usetex : True
font.family : serif 
font.serif  : cm
Run Code Online (Sandbox Code Playgroud)

使用=导致aUserWarning: Illegal line