matplotlib中中文不显示问题
windows与linux解决方法如下
import matplotlib
font = {'family': 'MicroSoft YaHei',
'weight': 'bold'}
matplotlib.rc('font', **font)
# matplotlib.rc('font', family='MicroSoft YaHei', weight='bold')
# 这种设置参数的方式与上面**设置参数方式相同
windows、linux、mac解决方法如下
from matplotlib import font_manager
# 实例化一个字体
my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/AdobeHeitiStd-Regular.otf')
# fname 指定字体的路径,windows环境下可直接搜索字体,选择对应字体复制路径
# ......
# 在使用字体的地方加上fontproperties属性
plt.xticks(list(x)[::3], _xticks_labels[::3], rotation=45, fontproperties=my_font)
一个简单曲线图的示例
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager
# font = {'family': 'MicroSoft YaHei',
# 'weight': 'bold'}
# matplotlib.rc('font', **font)
# # matplotlib.rc('font', family='MicroSoft YaHei', weight='bold')
# # 这种设置参数的方式与上面**设置参数方式相同
# 实例化一个字体
my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/AdobeHeitiStd-Regular.otf')
x = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]
# 设置图片大小
fig = plt.figure(figsize=(20,8),dpi=80)
# 绘图
plt.plot(x, y, label="温度", linestyle='--') # linestyle设置线条样式
# 设置x轴的刻度
_xticks_labels = ["10点{}分".format(i) for i in range(60)]
_xticks_labels += ["11点{}分".format(i) for i in range(60)]
# 取步长,数字和字符串要一一对应
plt.xticks(list(x)[::3], _xticks_labels[::3], rotation=45, fontproperties=my_font) # 使用字体
plt.yticks(range(20, 36))
# 添加描述信息
plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("温度", fontproperties=my_font)
plt.title("10点到12点每分钟温度变化情况", fontproperties=my_font)
# 设置网格线
plt.grid(alpha=0.4)
# 设置图例
plt.legend(prop=my_font)
plt.show()
参考视频:数据分析matplotlib折线图
一个简单散点图示例
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/AdobeHeitiStd-Regular.otf')
a = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22, 22,
23]
b = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12,
13, 6]
x1 = range(1, 32)
x2 = range(51, 82)
fig = plt.figure(figsize=(20,8), dpi=80)
plt.scatter(x1, a, label='3月气温')
plt.scatter(x2, b, label='10月气温')
_xticks_labels = ["3月{}日".format(i) for i in x1]
_xticks_labels += ["10月{}日".format(i-50) for i in x2]
x = list(x1) + list(x2)
plt.xticks(x[::3], _xticks_labels[::3], rotation=45, fontproperties=my_font)
plt.yticks(range(min(a + b), max(a + b) + 1))
plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("温度", fontproperties=my_font)
plt.grid(alpha=0.4)
plt.legend(prop=my_font)
plt.show()