一、安装
使用pip3安装
pip3 install matplotlib
二、编写测试程序
import matplotlib.pyplot as plt
%matplotlib inline #兼容性写法,有些系统不需要也可执行
plt.figure() #创建画布
plt.plot([2,0,4], [1,1,9], [4,5,6], [1,3,2]) #画图
plt.show()
效果:
matplotlib结构图:
三、Matplotlib的三层结构
1:容器层
画板(Canvas):位于最底层,充当画板,默认开启,不需要调用函数。
画布(Figure):位于Canvas上层,充当画布角色,调用plt.figure()
绘图区/坐标系(axes):位于Figure之上,相当于绘图区角色,默认创建一个,指定绘图区个数:plt.subplots()
一个Figure可包含多个axes,但一个axes只能属于一个figure
一个axes可包含多个axis(坐标轴),包含两个为2D,包含三个为3D坐标
2:辅助层:
axes(绘图区)内的除了根据数据绘制的图像之外的内容,主要包括axes外观,边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容
3:图像层
axes(绘图区)内通过plot、scatter、bar、histrgram、pie等函数根据数据回执出的图像
总结:
Canvas(画板)位于最底层,用户一般接触不到
Figure(画布)建立在Canvas上
Axes(绘图区)建立在Figure之上
坐标轴(axis)、图例(legend)等辅助显示层以及图像层建立在Axes之上
四、画布层面完善折线图-----设置画布大小、像素、保存图片
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(10,5), dpi=80) #创建画布,制定画布大小,即dpi像素
plt.plot([2,0,4], [1,1,9], [4,5,6], [1,3,2]) #画图
plt.savefig("./a.png") #保持图像,一定要在show前面,否则为空图片
plt.show() #plt调用show后会释放资源,因此save要放到之前
1.使用figsize 和dpi参数制定画布大小以及像素值
2.使用savefig保存图像,注意:savefig一定要在show之前,因为show会释放画布资源。
五、辅助层完善则线图
xticks、yticks设置x、y轴的描述
grid设置网格线
xlabel、ylabel设置x、y轴标题
title设置画布标题
#模拟某地11点-12点的温度变化曲线图
import random
import matplotlib.pyplot as plt
%matplotlib inline
x = range(60) #x轴一小时时间点
y = [random.uniform(15,18) for i in x] #y轴温度变化
x_lable = ["11点{}分".format(i) for i in x] #x轴坐标描述
#画布
plt.figure(figsize=(10,5), dpi=80)
#画图
plt.plot(x, y)
#设置x,y轴的坐标显示
plt.xticks(x[::5], x_lable[::5])
plt.yticks(range(40)[::5])
#显示网格
plt.grid(linestyle="--", alpha=0.5)
#添加标题
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("上海温度变化曲线图")
#显示图
plt.show()
效果:
六、图像层完善--添加多条折线
添加多条折线、设置折线样式:plt.plot(x, y_shanghai, color = "r", label="上海")
添加图例:plt.legend()
#模拟某地11点-12点的温度变化曲线图
import random
import matplotlib.pyplot as plt
%matplotlib inline
x = range(60) #x轴一小时时间点
y_shanghai = [random.uniform(15,18) for i in x] #y轴温度变化
y_beijing = [random.uniform(10,12) for i in x] #y轴温度变化
x_lable = ["11点{}分".format(i) for i in x] #x轴坐标描述
#画布
plt.figure(figsize=(10,5), dpi=80)
#画图
#plt.plot(x, y_shanghai, x, y_beijing)
plt.plot(x, y_shanghai, color = "r", label="上海")
plt.plot(x, y_beijing, color = "b", linestyle="--", label="北京")
#显示图例
plt.legend()
#设置x,y轴的坐标显示
plt.xticks(x[::5], x_lable[::5])
plt.yticks(range(40)[::5])
#显示网格
plt.grid(linestyle="--", alpha=0.5)
#添加标题
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("上海-北京温度变化曲线图")
#显示图
plt.show()
效果: