使用matplotlib绘图中文字符显示问题

一、常规解决方法

Python脚本中动态设置matplotlibrc,这样也可以避免由于更改配置文件而造成的麻烦,具体代码如下:

from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]

有时候,字体更改后,会导致坐标轴中的部分字符无法正常显示,此时需要更改axes.unicode_minus参数:

# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

一般的绘图上述方案均能解决,但是我在ubuntu系统下面发现没能解决

二、ubuntu系统中解决

 1. 下载字体simhei.ttf和simkai.ttf

        链接:百度云 
        提取码:i3pe

2. 将字体上传到服务器,上传位置“/home/Downloads/fonts/”

服务器的话可以用FileZilla上传文件(可参考我之前的博客远程GPU服务器运行Python_Dr.sky_的博客-CSDN博客_远程服务器跑python),本地的话可以直接拷贝到指定文件夹

3.  将字体文件复制到指定文件夹, "/usr/share/fonts/truetype/noto/", 别的路径可能无效

cd /home/Downloads/fonts
sudo cp -i simhei.ttf /usr/share/fonts/truetype/noto/
sudo cp -i simkai.ttf /usr/share/fonts/truetype/noto/

4. 删除字体路径缓存(当运行新程序时会重新生成)

cd /home/hao/.cache
rm -rf matplotlib

5. 在脚本中添加以下代码,然后运行程序

import matplotlib
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] #或者把"SimHei"换为"KaiTi"
matplotlib.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题

最后重启程序绘图即可显示中文字体

猜你喜欢

转载自blog.csdn.net/weixin_43734080/article/details/127012737