Linux环境下Python3使用Matplotlib绘图中文乱码问题解决实践
Posted 肖永威
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux环境下Python3使用Matplotlib绘图中文乱码问题解决实践相关的知识,希望对你有一定的参考价值。
环境:
CentOS 7
Python3.6
1. 方案一,增加Linux中文字体
1.1. 首先,把windows10环境下的中文字体拷贝到Linux系统中。
windows10字体默认文件夹为C:\\Windows\\Fonts。
本文拷贝了宋体(simsun.ttc)、黑体(simhei.ttf)、楷体(simkai.ttf)等三组字体。
在Linux字体路径中新建中文字体文件夹,拷贝文件:
[root@bigdatahost fonts]# mkdir chinese
[root@bigdatahost fonts]# cp /home/python/simkai.ttf /usr/share/fonts/chinese/simkai.ttf
[root@bigdatahost fonts]# chmod -R 755 /usr/share/fonts/chinese
1.2. 建立字体索引信息,更新字体缓存
[root@bigdatahost python]# cd /usr/share/fonts/chinese
[root@bigdatahost chinese]# mkfontscale
[root@bigdatahost chinese]# mkfontdir
[root@bigdatahost chinese]# fc-cache
1.3. 配置字体
[root@bigdatahost python]# vi /etc/fonts/fonts.conf
可以看到一个Font list,即字体列表,把如下所设置的添加字体目录加如。
<dir>/usr/share/fonts/chinese</dir>
清楚缓存
[root@bigdatahost python]# fc-cache
2. 方案二,把中文字体给matplotlib专用
2.1. 查看matplotlib文件路径
在Python3程序中输出matplotlib字体配置路径:
#import matplotlib
#print(matplotlib.matplotlib_fname())
2.2. 拷贝字体文件到matplotlib字体库中
cd /usr/local/python3/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc
mv simhei.ttf fonts/ttf/simhei.ttf
2.3. 配置matplotlib字体库
例如,没有中文显示时,提示如下:
findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans.
修改配置文件:
vi /usr/local/python3/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc
matplotlibrc配置文件默认是以“#”开头,如果不用则使用“##”。
对照修改内容如下:
#font.family: sans-serif
f#ont.sans-serif: SimHei, SimSun, KaiTi
#axes.unicode_minus: False
3. 成败关键一步,清缓存
本文使用python用户,则需要进入python用户目录下,缓存文件在此:
[python@bigdatahost ~]$ rm -rf .cache
!清错缓存,则无效。
附应用方法代码
import matplotlib.pyplot as plt
......
plt.rcParams['font.family']='sans-serif'
plt.rcParams['font.sans-serif']=['KaiTi'] #显示中文楷体
#plt.rcParams['font.sans-serif']=['SimHei'] #显示中文黑体
plt.rcParams['axes.unicode_minus']=False
以上是关于Linux环境下Python3使用Matplotlib绘图中文乱码问题解决实践的主要内容,如果未能解决你的问题,请参考以下文章
在linux系统下安装Python3虚拟环境和eclipse