matplotlib画图简直强大的不要不要的,但在默认情况下不支持中文字符,所以要通过以下设置字体来实现中文显示。
方法一:使用matplotlib.rc设置字体
font = {'family': 'FangSong',
'weight': 'bold',
'size': '14'}
matplotlib.rc('font', **font)
也可以写成一行:
matplotlib.rc('font', family='FangSong', weight='bold')
方法二:使用pylab包里的mpl动态设置参数
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
方法三:使用matplotlib包里的font_manager字体管理器(字体路径直接在开始搜索框搜"字体"就可以啦)
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname=r'C:\WINDOWS\FONTS\SIMSUN.TTC')
# 调用的时候设置fontproperties参数
# plt.xticks(_x[::5], _xtick_labels[::5], rotation=45, fontproperties=my_font)
举个例子:
from matplotlib import pyplot as plt
import numpy as np
import matplotlib
# 设置字体
# font = {'family': 'FangSong',
# 'weight': 'bold',
# 'size': '14'}
# matplotlib.rc('font', **font)
matplotlib.rc('font', family='FangSong', weight='bold')
x1 = range(0, 120)
y1 = [np.random.randint(20, 35) for i in range(120)]
plt.figure(figsize=(20, 8), dpi=80)
plt.plot(x1, y1)
# 调整X轴的刻度
_x = list(x1)
# 设置x轴刻度的字符串
_xtick_labels = ["6点%s分" % i for i in range(60)]
_xtick_labels += ["7点%s分" % i for i in range(60)]
# 取步长,数字和字符串一一对应,数据的长度一样,rotation旋转刻度字符
plt.xticks(_x[::5], _xtick_labels[::5], rotation=45)
plt.show()