环境:
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 
Logo

更多推荐