使用matplotlib更改fontsize时pdf导出中的错误字符间距

时间:2017-02-28 12:11:42

标签: python pdf matplotlib fonts spacing

我通过设置:

在matplotlib中使用Myriad Pro字体
import matplotlib as mpl
mpl.rc('font', **{'family' : 'sans-serif', 'sans-serif' : ['Myriad Pro']})
mpl.rcParams['pdf.fonttype'] = 42

使用matplotlib 1.5,这对我来说很好。 我最近升级到matplotlib 2.0.0,从那时起我遇到以下问题: 将fontsize更改为smalles值(如fontsize = 2.0)时, 所有其他字体(轴标签和刻度标签)受到影响 inter characterspacing搞砸了,因此所有文本元素都会重叠。

下面是一个最小的例子,它为我产生了错误:

import matplotlib as mpl
from matplotlib import pyplot as plt
from matplotlib import rc

if __name__ == '__main__':

    f, ax1 = plt.subplots(1)

    # select custom font
    mpl.rc('font', **{'family' : 'sans-serif', 'sans-serif' : ['Myriad Pro']})
    mpl.rcParams['pdf.fonttype'] = 42

    # plot data
    xValues = [1.0, 2.0]
    yValues = [2.0, 3.0]
    ax1.plot(xValues, yValues)

    # add labels
    plt.title('my title', fontsize = 2.0)
    ax1.set_xlabel('x label')
    ax1.set_ylabel('y label')

    # save and show figure
    f.savefig('minimalExample.pdf')

enter image description here

通过调用我在交互式版本中没有此问题 在

plt.show()

如果我将输出保存为.png文件而不是.pdf文件,我也看不到这种行为。

1 个答案:

答案 0 :(得分:0)

这似乎已经在这里得到了解决: https://github.com/matplotlib/matplotlib/issues/7937 并且显然是所有42型pdf字体的问题。