PYPLOT(PYTHON中绘制2D图表)使用详解(一)

在学习机器学习与PYTHON的相关内容中,接触到了pyplot这个子库,感觉非常有用,可是网络上的文章大部分都是比较零散的,于是打算按照官方文档,进行一个简单翻译与演示,详细记录一下该库的使用方法。

一、pyplot简介

pyplot是matplotlib库的一个子库,提供了类似MATLAB的绘图方法,虽然没有MATLAB功能强大,但是对于想学习如何在PYTHON环境下练习机器学习的初学者来说,是一个比较方便的小工具。它主要用来绘制2D图表,例如:

2345截图20170320213030.png

通过对数据进行图形化展示(有点像EXCEL里生成折线图的功能),可以直观的了解数据的分布情况,更好的制定出学习方法。同时,它还可以展示出我们机器学习到的计算方法,了解其与实际情况是否相符等问题。如上图中的黄色虚线,是我通过学习算法得出了数据模拟走势。

二、方法介绍

1、show() —— 显示图形界面。

当我们将图形界面配置完成后,通过调用show()方法来展示界面。

参考代码:

import matplotlib.pyplot as plt # 从matplotlib库导入子库pyplot,缩写为plt
plt.grid() # 显示网格,后面介绍
plt.show() # 显示图形

效果如图所示:

2345截图20170320214345.png

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')

效果如下:

2345截图20170321100421.png

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更直观的看到图像

操作结果:

2345截图20170321105946.png

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

操作结果:

2345截图20170321165154.png

10、xkcd() —— 素描风格绘图模式

他只会对你设置后的代码起作用,而且建议提前安装字体“Humor Sans”

参考代码:

import matplotlib.pyplot as plt
with plt.xkcd(): # 采用素描风格绘图模式
    plt.plot([1,3,3,4]) # 随意设置一组数字方便演示
    plt.show() # 展示内容

操作结果:

2345截图20170321171305.png

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()

操作结果:

2345截图20170321213356.png

12、gcf() —— 获取当前figure的尺寸

参考代码:

import matplotlib.pyplot as plt
plt.figure(1)
plt.grid()
print(plt.gcf()) # 返回: Figure(640×480)
plt.show()

操作结果:

2345截图20170321214512.png

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

操作结果:

2345截图20170321214810.png

14、get_fignums() —— 获取figures序号的数组

参考代码:

import matplotlib.pyplot as plt
plt.figure(1)
plt.figure(2)
plt.figure(3)
print(plt.get_fignums())

操作结果:

2345截图20170321215024.png

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)

操作结果:

2345截图20170321221149.png

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()一行,会发现网格还有展示

2345截图20170322111003.png

标签: none

添加新评论