1.什么是Matplotlib
- 是专门用于开发2D图表(包括3D图表)
- 使用起来及其简单
- 以渐进、交互式方式实现数据可视化
2.Matplotlib三层结构(拓展,了解)
2.1 容器层
容器层主要由Canvas、Figure、Axes组成。
Canvas 是位于最底层的系统层,在绘图的过程中充当画板的角色,即放置画布(Figure)的工具。
Figure 是Canvas上方的第一层,也是需要用户来操作的应用层的第一层,在绘图的过程中充当画布的角色。
Axes 是应用层的第二层,在绘图的过程中相当于画布上的绘图区的角色。 -Figure:指整个图形(可以通过plt.figure0设置画布的大小和分辨率等)
-Axes(坐标系):数据的绘图区域
-Axis(坐标轴): 坐标系中的一条轴,包含大小限制、刻度和刻度标签特点为:
一个figure(图像)可以包含多个axes(坐标系/绘图区),但是一个axes只能属于一个figure。 一个axes(坐标系/绘图区)可以包含多个axis(坐标轴),包含两个即为2d坐标系,3个即为3d坐标系
2.2辅助显示层
辅助显示层为Axes(绘图区)内的除了根据数据绘制出的图像以外的内容,主要包括Axes外(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis abel)、坐标轴刻度(tick)、坐标轴刻度标签(ticklabel)、网格线(grid)、图例(legend)、标题(title)等内容。
该层的设置可使图像显示更加直观更加容易被用户理解,但又不会对图像产生实质的影响。
2.3图像层
图像层指Axes内通过plot、scatter、bar、histogram、pie等函数根据数据绘制出的图像。
3.绘图操作(折线图)
1.创建画布
import matplotlib.pyplot as plt
#plt.figure(figsize="画纸的大小",dpi=图形的分辨率,Facecolor=背景颜色,Edgecolor=边框颜色)
plt.figure(figsize=(20,8),dpi=100)
2.绘制图像
x=[1,2,3]
y=[4,5,6]
plt.plot(x,y) #绘制什么图像 plt. 就接什么
3.显示图像
plt.show()
4.保存图片到指定路径
#plt.savefig("保存路径")
plt.savefig("./test.png")
# 注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。
5.查看对象参数详细信息
#help(查看的函数(不加括号))
Eg:
help(plt.figure)
6.添加自定义下x,y刻度
- plt.xticks(x,**kwargs)
x:要显示的刻度值
- plt.yticks(y,**kwargs)
y: 要显示的刻度值
#构造x轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
#构造y轴刻度
y_ticks= range(40)
#修改下,y轴坐标的刻度显示
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# todo 在xticks和yticks中的参数第一个必须是数字
7.给画布添加网格显示
-
plt.grid(True,linestyle=‘–’,alpha=0.5)
linestyle----->添加的是虚线还是实线
alpha ------->透明度(1为不透明)
plt.grid(True,linestyle='--',alpha=1)
8.添加描述
-
plt.xlabel(“描述”,fontsize=数字)
-
plt.ylabel(“描述”,fontsize=数字)
-
plt.title(“描述”,fontsize=数字)
fontsize:是字体大小
plt.xlabel("时间",fontsize=20)
plt.ylabel("温度",fontsize=20)
plt.title("一小时温度变化图")
9.一个画布上显示多个图
直接再次创建y的一组数据,和再次plt.plot(x,y0)即可
10.显示图例
plt.legend(loc=‘best’)
Location String | Location Code |
---|---|
‘best’ | 0 |
‘upper right’ | 1 |
‘upper left’ | 2 |
‘lower left’ | 3 |
‘lower right’ | 4 |
‘right’ | 5 |
‘center left’ | 6 |
‘center right’ | 7 |
注意:需要在显示之前,声明plot里面的具体值,Eg:plot(x,y,coclor=“r”,linestyle=‘–’,label=“线的对象即图例声明”
11.设置图形的风格
颜色字符 | 风格字符 |
---|---|
r 红色 | - 实线 |
g 绿色 | – 虚线 |
b 蓝色 | -. 点划线 |
w 白色 | : 点虚线 |
c 青色 | ’ ’ 留空,空格 |
m 洋红 | |
y 黄色 | |
k 黑色 |
12.多个坐标系显示plt.subplots
(面向对象的画图方法)
plt.subplots(3nrows = 1,ncols = 1,**fig_wk)
'''
创建一个带有多个axes(坐标系/绘图区)的图
【nrows,ncols】:设置有几行几列坐标系
返回图对象fig及相应数量的坐标系axes
'''
# 数据准备
x = range(45)
y_zhshu = [random.uniform(5, 15) for i in x]
y_ganzh = [random.uniform(10, 20) for i in x]
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(15, 5), dpi=100) # 创建画布
# 绘制图像
axes[0].plot(x, y_heilongjiang, color="g", linestyle=":",label="黑龙江")
axes[1].plot(x, y_jilin, color="r", linestyle="-.", label="吉林")
# 构造x,y轴刻度标签
x_ticks_label = ["{}:00".format(i) for i in x]
# y_ticks = range(40)
# 刻度显示
axes[0].set_xticks(x[::2])
# axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::2])
axes[1].set_xticks(x[::2])
# axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::2])
# 添加网格显示
axes[0].grid(True, linestyle="--", alpha=0.2)
axes[1].grid(True, linestyle="-.", alpha=0.5)
# 添加描述信息
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("24小时内樟树市温度变化图", fontsize=20)
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("24小时内赣州市温度变化图", fontsize=14)
# 添加图例
axes[0].legend(loc=0)
axes[1].legend(loc=0)
plt.savefig("./subplots.jpg") # 图像保存
plt.show() # 图像显示
记忆方法:
单个坐标系时可用
plt.函数名()
和plt.subplots()
两种方法都可以且
plt.函数名()
其实是面向过程的画图,而axes.set_方法名()
是面向对象的画图两者的记忆函数名和方法名是一个参数函数。
13.常见图形种类的绘制及其意义
- 散点图:
定义:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。
特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
plt.scatter(x,y)
Eg:
#准备数据
x = range(500)
y = random.uniform(10,500) for i in x
#创建画布
plt.figure(figsize=(20,8),bpi=100)
#绘制散点
plt.scatter(x,y)
#显示图像
plt.show()
- 柱状图
定义:排列在工作表的列或者行中的数据可以绘制到柱状图中.
特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别.(统计/对比)
plt.bar(x,width,align='center',**kwargs)
'''
x : sequence of scalars.标量序列即变量的值
width: scalar or array-like , optional.柱状图的宽度
align : 可选(edge,center),默认为center,即在刻度的中心显示
color : 选择柱状图的颜色
'''
Eg:
#准备数据
name = ['数据一','数据二','数据三','数据四','数据五'......]
x = range(len(name))
y = [值一,值二,值三,值四,值五.....]
#创建画布
plt.figure(figsize=(20,8),dpi=100)
#绘制柱状图
plt.bar(x,y,width=0.5,corlor=['r','g','b','y'......])
#显示图像
plt.show()
- 直方图
定义:由一系列高度不等的纵向条纹或线段表示数据分布的情况.一般用横轴表示数据范围,纵轴表示分布情况.
特点:绘制连续性的数据展示一组或者多组数据分布状况(统计)
plt.hist(x,bins=None)
'''
x : 数据的值
bins : 组距
'''
- 饼图
定义: 用于表示不同分类的占比情况,通过弧度大小来对比各种分类.
特点 : 分类数据的占比情况(占比)
plt.pie(x,labels=,autopct=,colors)
'''
x : 所有的数量值
labels:每个部分对应的名称
autopct:占比显示指定%1.2f%%
colors:每部分颜色
'''
更多学习内容可去官网学习:https://matplotlib.org/index.html
本人基本都是个人笔记,非常希望有大佬提出错误和改进之处,但大佬轻喷哈!!!