matplotlib使用
1. matplotlib是什么?
python底层的绘图工具,执行效率很高。
2. matplotlib的基本要点:
- 如何设置图片的大小;
- 如何保存到本地;
- x轴和y轴的描述信息;
- 中文显示乱码问题;
- 调整x轴和y轴的刻度;
- x轴的刻度信息过长, 如何调整?
- 标记最高点;
案例1: 假设一天中每隔两个小时气温变化的折线图绘制;
from matplotlib import pyplot as plt
from matplotlib import font_manager
# 4). 中文显示乱码问题;
# fname的目录可通过shell命令:fc-list :lang=zh查找
myfont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=18)
titlefont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=24)
# 图表的x轴的数据, 是一个可迭代的数据类型
x_times = range(0, 24, 2)
# 图表的y轴的数据, 是一个可迭代的数据类型
y_temp = [15, 12, 13, 20, 23, 30, 15, 12, 13, 20, 23, 30]
# min(y_temp), max(y_temp)
# 1). 如何设置图片的大小;
plt.figure(figsize=(10, 10))
# 传入x和y轴的数据, 绘制图形;
plt.plot(x_times, y_temp)
# 3). x轴和y轴的描述信息;
plt.title("每天的气温变化(每隔两个小时)",fontproperties=titlefont )
plt.xlabel("时间", fontproperties=myfont)
plt.ylabel("温度", fontproperties=myfont)
# 5). 调整x轴和y轴的刻度;
# 6). x轴的刻度信息过长, 如何调整?通过rotation参数调整刻度的倾斜度
plt.xticks(x_times, labels=["%s时0分"%(i) for i in x_times], fontproperties=myfont, rotation=45)
y_temp_range = range(min(y_temp), max(y_temp)+1, 2)
plt.yticks(y_temp_range, labels=["%s 。C"%(i) for i in y_temp_range], fontproperties=myfont)
# 7). 标记最高点;注意:x轴和y轴的索引必须相对应
# mark表示圆圈标记,edgecolors表示圆圈的颜色,s表示标记点的大小
plt.scatter(x_times[2], y_temp[2], color='b')
plt.scatter(x_times[2], y_temp[2], color='', marker='o', edgecolors='r', s=300)
# 2). 如何保存到本地;
plt.savefig('doc/temp.png')
# 在执行程序时显示图像
# plt.show()
折线图练习
需求1:
绘制10点到12点每分钟的气温, 如何绘制折线图观察每分钟气温的变化情况?
temps = [random.randint(20, 35) for i in range(120)]
import random
from matplotlib import pyplot as plt
from matplotlib import font_manager
# 4). 中文显示乱码问题;
# fname的目录可通过shell命令:fc-list :lang=zh查找
myfont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=18)
titlefont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=24)
# 图表的x轴的数据, 是一个可迭代的数据类型
x_times=list(range(1,121))
# 图表的y轴的数据, 是一个可迭代的数据类型
y_temp = [random.randint(20,35) for i in range(120)]
# min(y_temp), max(y_temp)
# 1). 如何设置图片的大小;
plt.figure(figsize=(20, 15))
# 传入x和y轴的数据, 绘制图形;
plt.plot(x_times, y_temp)
# 3). x轴和y轴的描述信息;
plt.title("10点到12点每分钟的气温变化",fontproperties=titlefont )
plt.xlabel("时间", fontproperties=myfont)
plt.ylabel("温度", fontproperties=myfont)
# 5). 调整x轴和y轴的刻度;
# 6). x轴的刻度