Matplotlib作图的时候经常遇到中文显示的问题, 困扰了好久, 这次一次性解决了。
一般来说系统中都有中文字体, 但是Matplotlib识别不到。
原因其实是Matplotlib里面字体名称跟实际中文名称不匹配, 查询到Matplotlib里面这些中文字体实际是什么名字就可以了。
网上现有的教程都是针对Windows系统的, 所以同样的方法在MacOS中不起作用。
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
我们要做的就是查询一下当前系统有哪些字体:
# 查询当前系统所有字体
from matplotlib.font_manager import FontManager
import subprocess
mpl_fonts = set(f.name for f in FontManager().ttflist)
print('all font list get from matplotlib.font_manager:')
for f in sorted(mpl_fonts):
print('\t' + f)
输出:
all font list get from matplotlib.font_manager:
Al Tarikh
Alfa Slab One
Alibaba PuHuiTi
Alibaba PuHuiTi 2.0
Alibaba Sans
Allan
...
xiaowei
zcool-gdh
zcoolqingkehuangyouti
zcoolwenyiti
这里面Alibaba这几个字体挺眼熟的,还有后面几个zcool的站酷字体
我们要做的,就是把正确的字体名称替换上去就行了。
plt.rcParams['font.sans-serif'] = ['Alibaba PuHuiTi 2.0']
plt.rcParams['axes.unicode_minus'] = False
测试一下
plt.plot(label='Training Accuracy')
plt.title('壹只忧郁的中国台湾乌龟', fontsize=24,fontweight='bold')
再试试繁体
plt.plot(label='Training Accuracy')
plt.title('一隻憂鬱的中國臺灣烏龜', fontsize=24,fontweight='light',backgroundcolor='#3c7f99',color='white')
搞定!