PYPLOT(PYTHON中绘制2D图表)使用详解(一)
在学习机器学习与PYTHON的相关内容中,接触到了pyplot这个子库,感觉非常有用,可是网络上的文章大部分都是比较零散的,于是打算按照官方文档,进行一个简单翻译与演示,详细记录一下该库的使用方法。
一、pyplot简介
pyplot是matplotlib库的一个子库,提供了类似MATLAB的绘图方法,虽然没有MATLAB功能强大,但是对于想学习如何在PYTHON环境下练习机器学习的初学者来说,是一个比较方便的小工具。它主要用来绘制2D图表,例如:
通过对数据进行图形化展示(有点像EXCEL里生成折线图的功能),可以直观的了解数据的分布情况,更好的制定出学习方法。同时,它还可以展示出我们机器学习到的计算方法,了解其与实际情况是否相符等问题。如上图中的黄色虚线,是我通过学习算法得出了数据模拟走势。
二、方法介绍
1、show() —— 显示图形界面。
当我们将图形界面配置完成后,通过调用show()方法来展示界面。
参考代码:
import matplotlib.pyplot as plt # 从matplotlib库导入子库pyplot,缩写为plt
plt.grid() # 显示网格,后面介绍
plt.show() # 显示图形
效果如图所示:
2、isinteractive() —— 返回交互模式状态,布尔值
该命令的作用是返回一个布尔值(True OR False),以此确定交互模式的开关。
该命令决定了是否视图窗口绘图面板在每个pyplot命令后都绘制,如果为False,则每个命令后都更新(但只会在调用draw()命令后才进行绘制)。如果设置为True,则每个pyplot命令都会重新绘制。
该命令与以下四个命令配合密切:
ion() 打开交互模式
ioff() 关闭交互模式
draw() 强制窗口重新绘制
参考代码:暂无
3、ioff() —— 关闭交互模式
参考代码:
import matplotlib.pyplot as plt
print(plt.isinteractive()) # 默认返回False
plt.ion() # 打开交互模式
print(plt.isinteractive()) # 模式已打开,返回True
plt.ioff() # 关闭交互模式
print(plt.isinteractive()) # 模式已关闭,返回False
4、ion() —— 打开交互模式
参考代码:
同3、ioff()
5、pause() —— 暂停若干秒
该命令用于暂停运行,有点类似sleep,但不同之处在于,如果有活动的内容,暂停期间,GUI事件循环仍然会继续运行,就像一个简单的动画。当然,真正动画实现,请参考matplotlib库的animation子库。
参考代码:
import matplotlib.pyplot as plt
print('Pause start')
plt.pause(3) # 暂停3秒
print('Pause end')
效果如下:
6、rc、tc_context、rcdefaults,实际上是同步了matplotlib的同名子类,这里不说了,将来我们在相关文章中专门来说。
7、gci() —— 获取当前元素的基本属性(待编辑)
该命令功能不太明确,我尝试了一下,如果给plt中赋值了,那么会返回一个元组,里面包含图片尺寸等;如果plt为空,则返回None。
参考代码:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg # 用于导入图片
print(plt.gci()) # 在未向plt中添加内容时,返回None
img = mpimg.imread('D:\\python\\test.png') # 导入图片
plt.imshow(img) # 将图片在plt中显示
plt.axis('off') # 关闭坐标轴
print(plt.gci()) # 打印当前plt中内容的属性,返回AxesImage(80,52.8;496x369.6)
plt.show() # 展示plt更直观的看到图像
操作结果:
8、sci() —— 设置当前图像(Set Current Image)(待编辑)
这张图片将作为地图的目标,类似于jet()方法,当前图像是当前轴的属性。
还不是很清楚怎么用。
9、setp() —— 设置或获取artist属性
比如设置一个线段的属性为短间隔线
参考代码:
import matplotlib.pyplot as plt
line = plt.plot([1,3,3,4]) # 设置一条趋势线
setp(line, linestyle='--') # 设置线的格式为短间隔线
plt.show() # 展示plt
操作结果:
10、xkcd() —— 素描风格绘图模式
他只会对你设置后的代码起作用,而且建议提前安装字体“Humor Sans”
参考代码:
import matplotlib.pyplot as plt
with plt.xkcd(): # 采用素描风格绘图模式
plt.plot([1,3,3,4]) # 随意设置一组数字方便演示
plt.show() # 展示内容
操作结果:
11、figure() —— 创建图表
用于创建图表,可创建多个,可通过参数指定序号/分辨率/背景色等信息
参考代码:
import matplotlib.pyplot as plt
plt.figure(1, dpi=100, facecolor='r') # 创建图表1,主色用红色r,分辨率100
plt.plot([1,3,3,4]) # 随意输入个折线
plt.grid() # 显示网格
plt.figure(2, dpi=70, facecolor='b') # 创建图表2,主色用蓝色b,分辨率70
plt.plot([1,3,3,4])
plt.grid()
plt.show()
操作结果:
12、gcf() —— 获取当前figure的尺寸
参考代码:
import matplotlib.pyplot as plt
plt.figure(1)
plt.grid()
print(plt.gcf()) # 返回: Figure(640×480)
plt.show()
操作结果:
13、fignum_exists(num) —— 判断figure编号是否存在,返回布尔值
参考代码:
import matplotlib.pyplot as plt
plt.figure(1)
print(plt.fignum_exists(1)) # 返回True
print(plt.fignum_exists(2)) # 返回False
操作结果:
14、get_fignums() —— 获取figures序号的数组
参考代码:
import matplotlib.pyplot as plt
plt.figure(1)
plt.figure(2)
plt.figure(3)
print(plt.get_fignums())
操作结果:
15、get_figlabels() —— 获取所有figures的标签的数组
未测试到理想结果。缺少相关参考文档。
16、get_current_fig_manager() —— 获取当前的figure的manager的ID
参考代码:
import matplotlib.pyplot as plt
plt.figure(1)
print(plt.get_current_fig_manager().num)
plt.figure(2)
print(plt.get_current_fig_manager().num)
操作结果:
17、connect() —— 作用暂未明确
该方法继承自:FigureCanvasBase.mpl_connect
18、disconnect() —— 作用暂未明确
该方法继承自:FigureCanvasBase.mpl_connect
19、close() —— 关闭figure窗口
参考代码:
import matplotlib.pyplot as plt
plt.figure(1) # 创建窗口1
plt.figure(2) # 创建窗口2
plt.grid() # 窗口增加网格
plt.close(1) # 关闭窗口1
plt.show() # 展示剩余窗口
操作结果:只有窗口2会展示出来,因为窗口1已经关闭了。可以尝试删掉plt.close(1)这一行再试,会发现窗口1和窗口2都被打开了。
20、clf() —— 清空当前窗口
参考代码:
import matplotlib.pyplot as plt
plt.figure(1) # 创建窗口1
plt.grid() # 增加网格
plt.clf() # 清空窗口
plt.show() # 展示窗口
操作结果:注意已经将窗口清空了,如果去掉plt.clf()一行,会发现网格还有展示