如何在matplotlib(python)中更改字体?

Sir*_*irC 59 python fonts matplotlib

这听起来像一个简单的问题,但我没有找到任何有效的解决方案来改变python中使用matplotlib制作的图中的字体(而不是字体大小).

我发现了几个教程,通过修改matplotlib存储其默认字体的文件夹中的一些文件来更改matplotlib的默认字体 - 请参阅此博客文章 - 但我正在寻找一个不太激进的解决方案,因为我想使用多个我的情节中的字体(文字,标签,轴标签等).

aid*_*ni8 77

假设您想要标题的Comic Sans和x标签的Helvetica.

csfont = {'fontname':'Comic Sans MS'}
hfont = {'fontname':'Helvetica'}

plt.title('title',**csfont)
plt.xlabel('xlabel', **hfont)
plt.show()
Run Code Online (Sandbox Code Playgroud)

  • 找到fontList.cache文件,你只能使用那里列出的文件.或者看看这里http://stackoverflow.com/questions/20206906/matplotlib-fonts-in-enthought-canopy (3认同)
  • 跟进上述评论。要查找您的 fontList.cache 文件,请使用 matplotlib.get_cachedir() (3认同)

mor*_*ins 38

您还可以使用rcParams全局更改字体系列.

 import matplotlib.pyplot as plt
 plt.rcParams["font.family"] = "cursive"
 # This will change to your computer's default cursive font
Run Code Online (Sandbox Code Playgroud)

matplotlib的字体系列参数列表在这里.


小智 9

Windows 中不包含 Helvetica 字体,因此要使用它,您必须将其下载为 .ttf 文件。然后您可以像这样引用 matplotlib (将“crm10.ttf”替换为您的文件):

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()
Run Code Online (Sandbox Code Playgroud)

print(fpath)将告诉您应该将 .ttf 放在哪里。

您可以在此处查看输出: https ://matplotlib.org/gallery/api/font_file.html

  • ^ 回答我自己的问题:/sf/ask/2496775361/ (4认同)

guh*_*hur 8

我更喜欢雇用:

from matplotlib import rc
#rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
rc('font',**{'family':'serif','serif':['Times']})
rc('text', usetex=True)
Run Code Online (Sandbox Code Playgroud)

  • 全局更改字体的好方法,我一直在寻找这个。最后一行不是必需的,不确定 Tex 与此有什么关系。如果由于 Matplotlib 找不到所需的字体而出现错误,请查看此链接:https://scentellegher.github.io/visualization/2018/05/02/custom-fonts-matplotlib.html (3认同)

nag*_*don 7

import pylab as plb
plb.rcParams['font.size'] = 12
Run Code Online (Sandbox Code Playgroud)

或者

import matplotlib.pyplot as mpl
mpl.rcParams['font.size'] = 12
Run Code Online (Sandbox Code Playgroud)

  • 令人难以置信的是,这正是我正在寻找的命令。绝对不是OP要问的 (11认同)
  • 提问者在问题中明确表示他不想更改字体大小。 (3认同)