使用' text.usetex'时,pdf中嵌入了错误的字体=真

时间:2016-02-18 07:42:03

标签: python python-3.x matplotlib

我想通过设置rcParameter' text.usetex = True'来渲染我的情节。并将其保存为pdf。

如果我设置' text.usetex = False'并将字体设置为' Times New Roman' - >只嵌入了TimesNewRomanPS-ItalicMT和TimesNewRomanPSMT(见usetex_false)。

但如果我设置' text.usetex = True' - >而不是时代只嵌入了cm-fonts(例如CMMI12,CMR10,...)(参见usetex_true)

如何使用' text.usetex = True'并嵌入Times New Roman字体而不是cm-fonts?

我的代码:

"""
Demo of a line plot on a polar axis.
"""
import numpy as np
import matplotlib.pyplot as plt

with plt.rc_context({'text.usetex' : False, #---> no Times New Roman embedded when set to true, instead cm-fonts
                     'font.family' : 'serif',
                     'font.serif': 'Times New Roman',
                     'mathtext.fontset' : 'custom',
                     'mathtext.cal' : 'serif:cursive',
                     'mathtext.rm'  : 'serif',
                     'mathtext.tt'  : 'monospace',
                     'mathtext.it'  : 'serif:italic',
                     'mathtext.bf'  : 'serif:bold',
                     'mathtext.sf'  : 'sans'}):
    r = np.arange(0, 3.0, 0.01)
    theta = 2 * np.pi * r
    r = r*1000000000
    ax = plt.subplot(111, projection='polar')
    ax.plot(theta, r, color='b', linewidth=3)

    ax.grid(True)

    plt.title(r'Some text with latex in it  $10_4  \times \theta = \Phi$')
    plt.savefig(r'Test_text_embedded_of.pdf', papertype='None')

1 个答案:

答案 0 :(得分:0)

对我来说,添加以下行有帮助:

from matplotlib.backends.backend_pgf import FigureCanvasPgf
import matplotlib as mpl
mpl.backend_bases.register_backend('pdf', FigureCanvasPgf)