步骤如下:
- 1、 找到配置文件
matplotlibrc
不管是啥系统,都可以通过以下方式查找matplotlibrc
所在的文件夹(可以在终端或者编译器中运行以下代码)
import matplotlib
# 查找字体路径
print(matplotlib.matplotlib_fname())
结果:
D:\Coding\Anaconda\lib\site-packages\matplotlib\mpl-data\matplotlibrc
使用文本编辑器打开matplotlibrc
文件。
- 2、修改配置文件
使用Ctrl+F
查找font.family
所在位置,我的结果如下:
在下面的font.sans-serif
后面加入想要的中文字体类型,比如我加的就是楷体KaiTi
,我试了一下,如果在后面加入多个中文字体类型,会默认选择第一个的,所以根据自己的需求加就行。那么哪些字体是可以加进去的呢? - 3、查找可使用的字体类型并根据需求添加字体文件
找到并打开.matplotlib
文件夹,我的路径为C:\Users\14417\.matplotlib
,14417
是我电脑的用户名。在.matplotlib
中有一个名称为fontlist-v330.json
的文件,里面有电脑中字体文件(后缀为.ttf
)及其相对应的文字代码。使用文本编辑器打开,以KaiTi
为例:
KaiTi
对应的字体文件在"C:\\Windows\\Fonts\\simkai.ttf"
,其文字代码为KaiTi
,KaiTi
即我们需要添加到font.sans-serif
后面的。如果想用仿宋,先查找仿宋对应的字体文件及文字代码如下:
这里字体文件的路径与前面的不一样,是因为我修改了路径,这里就引出另一个问题:如果fontlist-v330.json
里面没有我们想要的文件咋办?不难发现以上截图中的字典里面除了fname
和name
以外不同字体对应的字典中的其他键值对是一样的,因此只需要知道我们想要的字体的fname
和name
便可使用。fname
为字体文件的路径,如果电脑有相关的字体文件则直接加上来即可,如前面的"C:\\Windows\\Fonts\\gadugib.ttf"
。如果电脑没有的话,则先从网上下载相应的.ttf
文件,然后放入matplotlibrc
对应的字体文件夹中,我的为D:\Coding\Anaconda\Lib\site-packages\matplotlib\mpl-data\fonts\ttf
,matplotlibrc
在D:\Coding\Anaconda\Lib\site-packages\matplotlib\mpl-data\
里面,最后将fname
设置为fonts\\ttf\\XX.ttf
即可,name
自己设置就行。 - 4、修改配置文件解决正负号显示错误问题
在配置文件matplotlibrc
中找到unicode_minus
并将其设置为False
即可。
记得一定一定要重启编译器,因为会有缓存,此时更改
matplotlibrc
的话直接运行代码还是没用的,重启之后就可以了。对于Linux系统啥的可以用print(matplotlib.get_cachedir())
找到缓存文件所在的位置并删除即可。我的电脑上运行以上代码找到的缓存文件夹里并没有相关的缓存文件,重启编译器也可实现上述效果。