最近接触到了这个绘图包,专门用来绘制论文中的图,挺好看的,看起来很高大上。用起来也比较方便,但其中的中文配置问题花了好久才弄好,再次记录一下。
Github项目地址:https://github.com/garrettj403/SciencePlots
主要是运行这条命令时:
with plt.style.context(['science', 'no-latex', 'cjk-sc-font']):
会提示报错:
Font family ['serif'] not found. Falling back to DejaVu Sans.
Generic family 'serif' not found because none of the following families were not found: Noto Serif CJK SC
简单来说就是找不到"Noto Serif CJK SC"这个字体。
关于'serif'与'sans-serif'的切换 网上所说的修改matplotlibrc文件并不适用,SciencePlots的配置文件在C:\用户\用户名\.matplotlib\stylelib中。其中不同的文件对应with..代码中的'cjk-sc-font'等模式,在里面可以配置
font.serif : Noto Serif CJK SC
font.family : serif
然后就是下载字体了。
这个步骤也耗费了好多时间
这个字体必须一个字也不差 有好多相似的
这里提供我用着好用的:
https://github.com/googlefonts/noto-cjk/tree/main/Serif/OTF/SimplifiedChinese
把列表中的7个都下载下来,安装。(是否需要把字体放到matplotlib下面的字体文件夹我不是很确定,保险起见可以放一下:Anaconda3\Lib\site-packages\matplotlib\mpl-data\fonts\ttf)
然后还有一步。
就是清除C:\用户\用户名\.matplotlib\下的缓存文件,这一步我一开始跟着网上的做,把文件夹里的东西都删了,这样SciencePlots就报错了。应该是将fontlist-v330.json这个文件删掉就行。
然后重启python,运行程序重新生成fontlist-v330.json,就大功告成啦。你也可以在这个json文件里搜索一下"Noto Serif CJK SC"看看字体是不是成功安装并被识别,要是找不到的话,大概率是没有安装成功或是没有放对文件夹。