How to change fonts in matplotlib (python)?

后端 未结 5 1125
不思量自难忘°
不思量自难忘° 2020-11-29 20:26

It sounds as an easy problem but I do not find any effective solution to change the font (not the font size) in a plot made with matplotlib in python.

I found a coup

相关标签:
5条回答
  • 2020-11-29 20:32

    You can also use rcParams to change the font family globally.

     import matplotlib.pyplot as plt
     plt.rcParams["font.family"] = "cursive"
     # This will change to your computer's default cursive font
    

    The list of matplotlib's font family arguments is here.

    0 讨论(0)
  • 2020-11-29 20:33
    import pylab as plb
    plb.rcParams['font.size'] = 12
    

    or

    import matplotlib.pyplot as mpl
    mpl.rcParams['font.size'] = 12
    
    0 讨论(0)
  • 2020-11-29 20:40

    Say you want Comic Sans for the title and Helvetica for the x label.

    csfont = {'fontname':'Comic Sans MS'}
    hfont = {'fontname':'Helvetica'}
    
    plt.title('title',**csfont)
    plt.xlabel('xlabel', **hfont)
    plt.show()
    
    0 讨论(0)
  • 2020-11-29 20:47

    The Helvetica font does not come included with Windows, so to use it you must download it as a .ttf file. Then you can refer matplotlib to it like this (replace "crm10.ttf" with your file):

    import os
    from matplotlib import font_manager as fm, rcParams
    import matplotlib.pyplot as plt
    
    fig, ax = plt.subplots()
    
    fpath = os.path.join(rcParams["datapath"], "fonts/ttf/cmr10.ttf")
    prop = fm.FontProperties(fname=fpath)
    fname = os.path.split(fpath)[1]
    ax.set_title('This is a special font: {}'.format(fname), fontproperties=prop)
    ax.set_xlabel('This is the default font')
    
    plt.show()
    

    print(fpath) will show you where you should put the .ttf.

    You can see the output here: https://matplotlib.org/gallery/api/font_file.html

    0 讨论(0)
  • 2020-11-29 20:51

    I prefer to employ:

    from matplotlib import rc
    #rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
    rc('font',**{'family':'serif','serif':['Times']})
    rc('text', usetex=True)
    
    0 讨论(0)
提交回复
热议问题