matplotlib添加字体、字体格式自定义

文章目录

  • 1.向matplotlib添加字体
  • 2.画图时自定义字体格式
  • 2.0 修改全局字体
  • 2.1 用`fontproperties`参数的一类方法
  • 2.2 用`prop`参数的一类方法
  • 2.3 用`fontdict`参数的一类方法
  • 2.4 汇总
  • 1.向matplotlib添加字体

    比如添加Times New Roman字体,参照此篇博客

    2.画图时自定义字体格式

    from matplotlib import pyplot as plt
    
    fig, ax = plt.subplots()
    

    2.0 修改全局字体

    对于Axes对象设置刻度字体很麻烦(先设定位置再设定文字)。有一条捷径就是先设置全局字体为预期的刻度字体,然后再设置别的地方的字体,如较为容易设置的标题字体、坐标轴标签字体、图例字体等。

    plt.rc('font',family='Times New Roman', size=15)
    

    2.1 用fontproperties参数的一类方法

    这一类方法包括plt.xlabel, plt.ylabel, ax.set_xlabel, ax.set_ylabel, plt.xticks, plt.yticks, plt.title, ax.set_title
    首先实例化一个FontProperties类,然后在调用函数时传给fontproperties

    from matplotlib import font_manager as fm
    
    font_properties = fm.FontProperties(**kwargs)
    plt.xlabel('xlabel', fontproperties=font_properties)
    plt.yticklabels(fontproperties=font_properties)
    

    其中可以指定的关键字参数有如下这些

    2.2 用prop参数的一类方法

    这类方法主要是绘制图例函数plt.legend, ax.legend
    首先定义一个fontdict,然后在调用函数时把fontdict传给prop参数
    其中fontdict的可选键名与FontProperties的可选参数名一样

    fontdict = {'family':'Times New Roman', 'size':19}
    plt.legend(loc='best',prop=fontdict)
    

    2.3 用fontdict参数的一类方法

    其中包括plt.xlabel, plt.ylabel,plt.text ax.text ax.set_xticklabels ax.set_yticklabels等。
    (没想到吧,plt设定ticklabelAxes对象设定ticklabels方法竟然不一样!!)
    也是定义一个fontdict,只不过这次传给的是fontdict参数。

    font_dict = {'math_fontfamily':'cm', 'size':19}
    plt.text(r'$S = \pi r^2$',fontdict=font_dict)
    xticks = ax.get_xticks()
    ax.set_xticks(xticks)
    ax.set_xticklabels(xticks, fontdict=font_dict)
    

    2.4 汇总

    方法 位置参数名 传入的参数类型
    plt.xlabel, plt.ylabel, ax.set_xlabel, ax.set_ylabel, plt.xticks, plt.yticks,plt.title,ax.set_title fontproperties FontProperties实例
    plt.legend, ax.legend prop fontdict字典
    plt.xlabel, plt.ylabel,plt.text, ax.text, ax.set_xticklabels, ax.set_yticklabels fontdict fontdict字典

    来源:JasmineFeng

    物联沃分享整理
    物联沃-IOTWORD物联网 » matplotlib添加字体、字体格式自定义

    发表评论