简单粗暴的解决关于Ubuntu下matplotlib显示中文问题

在使用matpoltlib构图的时候会遇到中文显示为方块的问题,在参考过各种资料之后终于折腾出一个简单粗暴的解决方案。由于我也是小白文,中有错误的地方希望大神提出来。

1.安装并查看系统中的字体

首先我们检查我们系统下是否有可用的中文字体在终端下输入fc-list :lang=zh(注意在:前面有个空格)在使用该命令以后我们就可看到我们系统中有的字体,挑选出来一个中文字体,如果没有或者中文字体或者太少我们可以使用
git clone https://github.com/tracyone/program_font && cd program_font && ./install.sh下载中文字体。再次使用fc-list :lang=zh查看,大概像下面一样。(红色箭头为我们待会使用的字体)
简单粗暴的解决关于Ubuntu下matplotlib显示中文问题

2.将查找到的字体放到matplotlib字体路径下

使用find / -name ttf查找出有ttf文件夹的路径并找到含有/.local/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf的路径(记为路径1) ,再使用cp命令将我们之前安装的字体复制到matplotlib字体路径下例如:
sudo cp /usr/share/fonts/MyFonts/*.ttf /home/lhf/.local/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/
(/usr/share/fonts/MyFonts这个路径为我们所安装字体的位置也就上上图箭头所指的文件路径
/home/lhf/.local/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/为我们之前所查找的路径1 注意中间加上*.ttf)

3.替换默认字体

在matplotlib中有默认使用的字体,我们所需要做的就是把默认字体替换为中文字体。我们使用命令cd进入到matplotlib字体存放路径下也就是我们之前所记的路径1,例如:cd /home/lhf/.local/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf 在进入matplotlib 字体路径后ls指令后我们将可以看到里面的所有字体,其中DejaVuSans.ttf为matplotlib默认字体, msyh.ttf是我们复制过去的即将使用的字体。我们将matplotlib默认的字体文件改名为“uondamDejaVuSans.ttf”命令为(1),将msyh.ttf改名为“DejaVuSans.ttf”命令为(2)
(1)sudo mv DejaVuSans.ttf quondamDejaVuSans.ttf
(2)sudo mv msyh.ttf DejaVuSans.ttf