本文解决在使用matplotlib绘图的时候图标上的中文显示不正常的情况,彻底解决的。

问题:

在使用matplotlib绘图的时候图标上的中文显示不正常

image-20210324221647496

原因

没有给matplotlib指定一个它能知道的字体。matplotlib本身是支持中文的,只是都是以拼音标注的。

1
2
3
4
5
6
7
8
9
# 查询当前系统所有字体
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)

image-20210324221904874

解决办法

在开头加入两行代码

1
2
3
4
5
import csv
from matplotlib import pyplot as plt
# 新加入的两行代码
import matplotlib
matplotlib.rc("font",family='youyuan')

再跑一遍:

image-20210324222103306

发现了新问题,前边的办法可以解决中文的显示问题,但是在axis存在负值的时候,负号显示不出来。

经过一番查询,目前较为好的解决办法是在文档前边加入这两句,同时解决这两个问题。

1
2
3
# 中文和负号的正常显示
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False