学习目标:matplotlib入门
内容
绘图流程
1.创建画布
2.绘制图像
3.显示图像
事例:
import matplotlib.pyplot as plt
#1.创建画布
plt.figure(figsize=(20,8),dpi=100)
#2.绘制图像
x=[1,2,3]
y= [4,5,6]
plt.plot(x,y)
#3.显示图像
plt.show( )
matplotlib三层结构
容器层
canvas:充当画板的角色
figure:充当画布的角色
axes:是应用层的第二层,充当画布上画图区域的角色
Figure:指整个图形(可以通过plt.figure0)设置画布的大小和分辨率等)
Axes(坐标系):数据的绘图区域
Axis(坐标轴):坐标系中的一条轴,包含大小限制、刻度和刻度标签
辅助显示层
添加x轴,y轴,标题声明
辅助显示层为Axes(绘图区)内的除了根据数据绘制出的图像以外的内容,主要包括Axes外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容。
图像层
绘制什么图像的声明
图像层指Axes内通过plot(折线图)、scatter、bar、histogram、pie等函数根据数据绘制出的图像
折线图(plot)与基础绘图功能
1.设置画布属性及图像保存
plt.savefig()注意:图像保存一定要放到show前面
import matplotlib.pyplot as plt
# #1.创建画布
plt.figure(figsize=(10,5),dpi=100)
# #2.绘制图像
x=[1,2,3,4,7,9]
y= [4,5,6,11,5,1]
plt.plot(x,y)
plt.savefig("./test.png")
# #3.显示图像
plt.show( )
# figsize:指定图的长宽
# dpi:图像的清晰度
2.自定义添加x轴,y轴刻度
plt.xticks plt.yticks
函数语法
xticks(ticks=None, labels=None, **kwargs)
函数参数
ticks:x轴刻度位置的列表,若传入空列表,即不显示x轴
labels:放在指定刻度位置的标签文本。当ticks参数有输入值,该参数才能传入参数
**kwargs:文本属性用来控制标签文本的展示,例如字体大小、字体样式等
注意:第一个参数必须是数字,如果不是数字,需要进行值替换
import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体设置-黑体
x= range(60)
y=[random.uniform(10,15) for i in x]
#1.创建画布
plt.figure(figsize=(20,8),dpi=100)
#2.图形绘制
plt.plot(x,y)
#2.1添加x,y轴刻度
y_ticks =range(40)
x_ticks_labels=["11点{}分".format(i)for i in x]
plt.yticks(y_ticks[::5])
plt.xticks(x[::5],x_ticks_labels[::5])
# 3.图像展示
plt.show()
3.添加网格
plt.grid(T,linestyle='--',alpha=1):
参数:
linestyle--绘制网格的方式
alpha--透明度
4.添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("一小时温度变化图",fontsize=20)
5.多次plot
直接进行绘制
6.显示图例(常用在多条曲线)
plt.legend()
注意:需要在显示之前,声明plot里面的具体值
import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体设置-黑体
x= range(60)
y_shanghai=[random.uniform(10,15) for i in x]
y_beijing=[random.uniform(15,20) for i in x]
#1.创建画布
plt.figure(figsize=(10,8),dpi=100)
#2.图形绘制
plt.plot(x,y_shanghai, label="上海",color="r")
plt.plot(x,y_beijing, label='北京')
# 2.1 添加x,y轴的刻度
x_labels_ticks=["11点{}分".format(i) for i in x]
y_labels_ticks =range(5,30)
plt.xticks(x[::5],x_labels_ticks[::5])
plt.yticks(y_labels_ticks[::5])
#2.2 添加网格线
plt.grid(linestyle="--",alpha=0.5)
#2.3 添加描述信息
plt.xlabel("时间",fontsize=16)
plt.ylabel("温度",fontsize=16)
plt.title("某城市11点-12点温度变化",fontsize=20)
#2.4 增加图例
plt.legend(loc="best")
# 3.显示
plt.show()
7.多个坐标系图像显示
在创建画布时用
fig,axes =plt.subplots()
nrows --几行
ncols --几列
注意:有些方法需要添加set_*
常见图形的绘制
matplotlib能够绘制:折线图,散点图,柱状图,直方图,饼状图
散点图
plt.scatter()
import matplotlib.pyplot as plt
plt.figure(figsize=(10,5),dpi=100)
x=[2,3,4,6,4,57,78,9,4,12]
y=[2,4,5,6,8,98,90,7,3,21]
plt.scatter(x,y)
plt.show()
柱状图
--plt.bar
统计、对比
直方图
--plt.hist()
统计,分布
饼图
--plt.pie