这个问题之前有遇到过,解决问题之后也没有上心。这次又遇到了,花了好多时间来解决。为了避免之后再做重复的工作,决定写下这一篇博客咯。希望能帮到大家。
方案一:
方案一是在python终端中进行的。确保自己的终端中已经启动python。
导入matplotlib库。
import matplotlib as mpl
导入matlablib库中的子模块:font_manager,这个模块可能有时候不会被__init__.py自动导入。在一些问题中,报错就是由于这个模块引起的。
import matplotlib.font_manager
找到matplotlib的字体缓存文件。
mpl.get_cachedir()
找到对应路径下的缓存文件,将它删除。接着尝试重新运行代码。如若问题仍然存在,尝试以下方案。
方案二:
删除matplotlib缓存中的字体。步骤同上。
找到matplotlib的字体目录,下面是我的目录,可以用作参考。
D:\miniconda3\pkgs\matplotlib-base-3.6.2-py310h1094b8e_0\Lib\site-packages\matplotlib\mpl-data\fonts\ttf
把相关字体复制到此目录下,字体的链接如下。
https://www.fontsquirrel.com/fonts/computer-modern
如果不是你需要的那种字体,尝试从Windows系统中去找一下这种字体。下面介绍在Windows系统中寻找字体。
一般Windows系统中的字体保存在如下路径下:
C:\Windows\Fonts
显示的页面如下:
图1 Windows系统自带字体
选中需要的字体,Ctrl+C,将字体复制到matplotlib的字体目录。接下来在python代码中进行动态设置参数即可。
以微软雅黑为例:
在代码前加入这两句代码:
plt.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
其中,第一句表示在绘图中使用微软雅黑字体。第二句是为了防止图像中的负号无法正常显示而加入的。
下图给出的是Windows系统自带字体的对应名称:
图2 Windows系统自带字体名称对照表
方案三:
如果以上两种方法仍然没有解决你的问题,那有可能你代码中使用的字体是第三方的字体库。这种情况就比较难处理了。
你可能需要考虑换种字体,或者想办法去下载到这个第三方的字体库。下面给出两个字体下载的链接。
https://www.fontpalace.com/
https://fontzone.net/popular-fonts/
【写在最后】
很高兴,最近迎来了自己的第七个粉丝,同时也是我的第六个真人粉丝。感谢你的关注,创作一下子就有了动力^v^。
在之前的博客中,有预告说会在之后的更新中结合具体代码来讲讲模糊系统,一月份有点小忙,计划将在下个月,也就是二月份的时候来把这个坑给填上咯。
最后,感谢大家的关注!