写在该专题之前:
(该专题参考bi站黑马程序员【python教程】数据分析——numpy、pandas、matplotlib)
https://www.bilibili.com/medialist/play/ml1115867835/BV1hx411d7jb
问题引入
如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况?
需要用到的库
from matplotlib import pyplot as plt
import random
from matplotlib import font_manager
源码
my_font = font_manager.FontProperties(fname="C:\\Windows\\Fonts\\simfang.ttf")
x = range(0, 120)
random.seed(10)
y = [random.randint(20, 35) for i in range(120)]
# figsize=(width,high) dpi 每英寸上点的个数 (清晰程度)
fig = plt.figure(figsize=(20, 8), dpi=80)
plt.plot(x, y)
# 指定x的刻度
_xtick_lables = ["10:{}".format(i) for i in range(60)]
_xtick_lables += ["11:{}".format(i) for i in range(60)]
plt.xticks(list(x)[::3], _xtick_lables[::3], rotation=45, fontproperties=my_font)
# rotation=45让字符串旋转45度
# 添加描述信息
plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("温度 单位(℃)", fontproperties=my_font)
plt.title("10:00到12:00的气温变化", fontproperties=my_font)
# plt.savefig("./t.png")
plt.show()
程序运行结果
注意事项
1、figsize = (width,high)
dpi每英寸上点的个数 (清晰程度)
# figsize = (width,high) dpi 每英寸上点的个数 (清晰程度)
fig = plt.figure(figsize=(20, 8), dpi=80)
2、matplotlib默认不支持中文字符,因为默认的英文字体无法显示汉字,解决方法如下:给fontproperties属性赋一个值来显示中文字体
font_manager.FontProperties(fname=“字体文件路径”)
my_font = font_manager.FontProperties(fname="C:\\Windows\\Fonts\\simfang.ttf")
plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("温度 单位(℃)", fontproperties=my_font)
plt.title("10:00到12:00的气温变化", fontproperties=my_font)
练习
x = range(11, 31)
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]
将a,b绘制在同一个图上
my_font = font_manager.FontProperties(fname="C:\\Windows\\Fonts\\simfang.ttf")
x = range(11, 31)
y_1 = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
y_2 = [1, 0, 3, 1, 2, 2, 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1]
# figure(width,high) dpi 每英寸上点的个数 (清晰程度)
fig = plt.figure(figsize=(20, 8), dpi=80)
plt.plot(x, y_1, label="小明", color="orange")
plt.plot(x, y_2, label="小华", color="blue")
# 指定x的刻度
_xtick_lables = ["{}岁".format(i) for i in x]
plt.xticks(x, _xtick_lables, fontproperties=my_font)
plt.yticks(range(0, 9))
# 绘制网格
plt.grid(alpha=0.2)
# 添加图例
plt.legend(prop=my_font, loc="upper right")
plt.show()