Python matplotlib font_manager使用替代字体

时间:2018-01-19 20:51:50

标签: python matplotlib

我正在尝试在matplotlib中使用替代字体。 通过使用font_manager,我可以得到像xlabel,ylabel或title这样的东西,但是我无法弄清楚如何在线标签上更改字体

我选择" Phosphate.ttc"字体,因为它很容易发现。


import matplotlib.font_manager as fm
import matplotlib.pyplot as plt

def lineChart():
    my_font = fm.FontProperties(fname='/Library/Fonts/Phosphate.ttc')
    day = ('1','2','3')
    line1 = (10,20,30)
    line2 = (30,20,10)

    fig, ax = plt.subplots()
    ax.plot(day, line1, label='this goes to default font')
    ax.plot(day, line2, label='this is default font too')
    ax.legend(loc='upper center')
    plt.title('title display correct', fontproperties=my_font)
    plt.xlabel('xlabel display correct', fontproperties=my_font)
    plt.ylabel('ylabel display correct', fontproperties=my_font)
    plt.savefig("font_test.png")

if __name__ == '__main__':
    lineChart()

如果无论如何全局设置替代字体? (不安装到matplotlib模块路径)

或设置行标签以使用替代字体?

操作系统:OSX
Python:3.6.4
matplotlib:2.1.1

由于

1 个答案:

答案 0 :(得分:1)

您可以在legend命令中设置字体。将相应的行更改为:

ax.legend(loc='upper center', prop=my_font)

生成此图片:

legend with custom font

修改

更改刻度标签的字体可以通过以下方式完成(在绘图命令后添加):

for tick in ax.xaxis.get_major_ticks():
    tick.label.set_fontproperties(my_font)

for tick in ax.yaxis.get_major_ticks():
    tick.label.set_fontproperties(my_font)

结果如下:

ticks with custom font