我正在尝试使用Matplotlib& Xcode中的Python生成科学图形。我的老板希望他们在LaTeX中使用匹配的字体。我知道你可以用这样的东西修改python中的字体:
from matplotlib import rc
rc('font',**{'family':'serif','serif':['Computer Modern Roman']})
rc('text', usetex=True)
不幸的是,使用plt.show()
或plt.savefig()
打开或保存数字会产生一系列错误,最终会导致OSError: [Errno 2] No such file or directory
。
我知道“Google是你的朋友”,但我还没有找到任何关于如何解决这个问题的方法。任何帮助将不胜感激。
答案 0 :(得分:1)
我通常发现直接指定字体文件我最简单。这是一个例子:
import matplotlib.pyplot as plt
import matplotlib.font_manager
from numpy import *
# cmunso.otf is a randomly selected font in my tex installation
path = '/usr/local/texlive/2012/texmf-dist/fonts/opentype/public/cm-unicode/cmunso.otf'
f0 = matplotlib.font_manager.FontProperties()
f0.set_file(path)
plt.figure()
plt.xlim(0,1.)
plt.ylim(0,1.)
d = arange(0, 1, .1)
plt.plot(d, d, "ob", label='example')
plt.text(.5, .1, 'text.. abcdef', fontproperties=f0, size=30)
plt.xlabel("x label", fontproperties=f0)
plt.legend(prop=f0, loc=2)
我不是字体专家,但我认为这更容易的原因是字体选择通常有一组级联的默认值,用于指定字体的方式与系统的方式不完全匹配。但是,该文件很容易找到并准确指定(尽管它显然不那么便携)。
请注意,对于xlabel
和text
,关键字为fontproperties
,legend
为prop
。