349 字
2 分钟
Matplotlib绘图添加任意字体
需求
matplotlib默认的字体为 DejaVu Sans,想改为使用 Arial 字体
添加字体
通过以下代码获取路径:
import matplotlibmatplotlib.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 matplotlibmatplotlib.get_cachedir()#output:/home/scott/.cache/matplotlib
将这个matplotlib
文件夹删了即可
修改matplotlibrc文件
上面添加字体时获取了一个文件路径:/home/scott/miniconda3/envs/seisbench/lib/python3.11/site-packages/matplotlib/mpl-data/matplotlibrc
,就是这个matplotlibrc
文件,将该文件中以下两行开头的#
删掉即可
## 将以下语句前面的#号去掉即可font.family : sans-seriffont.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_managerfor 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字体库中了,下次可以直接调用了
参考
Matplotlib绘图添加任意字体
https://fuwari.cbba.top/posts/matplotlib绘图添加任意字体/