349 字
2 分钟
Matplotlib绘图添加任意字体
2025-08-19

需求#

matplotlib默认的字体为 DejaVu Sans,想改为使用 Arial 字体

添加字体#

通过以下代码获取路径:

import matplotlib
matplotlib.matplotlib_fname()
# output:
/home/scott/miniconda3/envs/seisbench/lib/python3.11/site-packages/matplotlib/mpl-data/matplotlibrc

根据上面输出的路径,进入/home/scott/miniconda3/envs/seisbench/lib/python3.11/site-packages/matplotlib/mpl-data/fonts路径,该路径中有三个文件夹,将字体放入ttf文件夹中

删除缓存(特殊情况:缓存文件夹为空时不用删)#

通过以下代码获取 matplotlib 的缓存目录

import matplotlib
matplotlib.get_cachedir()
#output:
/home/scott/.cache/matplotlib

将这个matplotlib文件夹删了即可

修改matplotlibrc文件#

上面添加字体时获取了一个文件路径:/home/scott/miniconda3/envs/seisbench/lib/python3.11/site-packages/matplotlib/mpl-data/matplotlibrc,就是这个matplotlibrc文件,将该文件中以下两行开头的#删掉即可

Terminal window
## 将以下语句前面的#号去掉即可
font.family : sans-serif
font.sans-serif : font.sans-serif: DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

验证是否添加成功#

from matplotlib import font_manager
for font_name in sorted(font_manager.get_font_names()):
print(font_name)
## outputs:
# Arial
# DejaVu Sans
# DejaVu Sans Display
# DejaVu Sans Mono
# DejaVu Serif
# DejaVu Serif Display
# STIXGeneral
# STIXNonUnicode
# STIXSizeFiveSym
# STIXSizeFourSym
# STIXSizeOneSym
# STIXSizeThreeSym
# STIXSizeTwoSym
# SimSun
# Times New Roman
# Ubuntu
# Ubuntu Condensed
# Ubuntu Mono
# cmb10
# cmex10
# cmmi10
# cmr10
# cmss10
# cmsy10
# cmtt10

如果输出时带有自己添加的字体即为添加成功,添加成功的字体已经加载到了matplotlib字体库中了,下次可以直接调用了

参考#

  1. Matplotlib绘图如何添加任意字体 - 知乎
Matplotlib绘图添加任意字体
https://fuwari.cbba.top/posts/matplotlib绘图添加任意字体/
作者
Chen_Feng
发布于
2025-08-19
许可协议
CC BY-NC-SA 4.0