以Win10为例,其他系统步骤基本相同
1. 找到matplotlib 配置文件:
import matplotlib
print(matplotlib.matplotlib_fname())
# 我自己的输出结果如下:
# D:\Program Files\Python37\Lib\site-packages\matplotlib\mpl-data
2. 打开并修改文件 matplotlibrc
? ? ? ? 删除?font.family?和?font.sans-serif?两行前的 #,并在 font.sans-serif 后添加中文字体,比如黑体simhei?(注意,也可为其他中文字体,但必须为英文字体名,中文字体名无效)
? ? ? ??取消 axes.unicode_minus?前面的 #,且把值改为 false? (作用是解决负号'-'显示为方块的问题)
3. 下载并安装字体: simhei.ttf (非必须步骤)
? ? ? ? 一般电脑上都自带黑体,在 C:\Windows\Fonts 中找到 simhei.ttf 或其他想要使用的中文字体后,就不必再额外下载安装字体
# D:\Program Files\Python36\Lib\site-packages\matplotlib\mpl-data\fonts\ttf
4. 删除.matplotlib/cache里面的两个缓存字体文件
C:\Users\你的用户名\.matplotlib
? ? ? ? 或者名为:fontList xxx .json
5. 重启Python或Pycharm等编译环境
????????大功告成!
补充,执行下这段程序--可以打印出电脑可用的中文字体:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from matplotlib.font_manager import FontManager
import subprocess
fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)
#print(mat_fonts)
output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True)
#print( '*' * 10, '系统可用的中文字体', '*' * 10)
#print (output)
zh_fonts = set(f.split(',', 1)[0] for f in output.decode('utf-8').split('\n'))
available = mat_fonts & zh_fonts
print ('*' * 10, '可用的字体', '*' * 10)
for f in available:
print (f)
|