对于 matplotlib-xelatex 组合来说,这是一个稍微有点边缘的问题。
我在 matplotlib 的 png/pdf 输出中强制使用无衬线字体系列时遇到了问题。我想使用 tex 渲染以保持一致性,但出于技术原因,我想输出 png/pdf 图像而不是 PGF 输出。无论哪种方式,标签、刻度标签和图例的字体都是衬线字体,尽管我试图获取无衬线字体。
这是一个简单的例子:
from numpy import linspace
import matplotlib
matplotlib.use('pgf')
from matplotlib.pyplot import close, figure, rcParams
params = {
'font.family': 'sans-serif',
'font.sans-serif': 'Linux Biolinum',
'text.usetex': True,
'pgf.texsystem': "xelatex",
'pgf.rcfonts': True,
'text.latex.preamble': [
r'\usepackage{libertine}',
r'\usepackage{fontspec}',
r'\setmainfont{Linux Biolinum}',
]
}
rcParams.update(params)
my_figure = figure()
x = linspace(-1, 1)
axes = my_figure.gca()
axes.plot(x, x**2, label='\\textrm{Re}')
axes.legend(loc='upper left', handlelength=2)
my_figure.savefig(
'test.png',
box_inches='tight',
dpi=300)
close(my_figure)