文章目录
[ Matplotlib version: 3.2.1]
一、Matplotlib常用技巧
(一)导入
import matplotlib as mpl
import matplotlib.pyplot as plt
(二)设置绘图样式
使用plt.style
来选择图形的绘图风格(如经典风格classic)
plt.style.use('classic')
(三)显示图形
1. 在脚本中画图
如果在一个脚本文件中使用Matplotlib,那么显示图形的时候必须使用plt.show()
plt.show()
会启动一个事件循环(event loop),并找到所有当前可用的图形对象,打开一个或多个交互式窗口显示图形- 注意:一个Python会话(session)中只能使用一次
plt.show()
,因此通常都把它放在脚本的最后。多个plt.show()
命令会导致显示异常。
2. 在IPython shell中画图
需要在启动IPython后使用%matplotlib
魔法命令。
- 此后任何plt命令都会自动打开一个图形窗口,增加新的命令,图形就会更新。
- 有一些变化不会自动及时更新,可以使用
plt.draw()
强制更新。 - 在IPython shell中不需要使用
plt.show()
3. 在IPython Notebook中画图
IPython Notebook是一款基于浏览器的交互式数据分析工具,可以将描述性文字、代码、图形、HTML元素以及更多的媒体形式组成起来,集成到单个可执行的Notebook文档中(如Jupyter Notebook)
用Jupyter Notebook也需要使用%matplotlib
魔法命令,可以将图形直接嵌在页面中,有两种展现形式:
%matplotlib notebook
会在Notebook中启动交互式图形%matplotlib inline
会在Notebook中启动静态图形
(文中统一使用)%matplotlib inline
运行命令之后(每一个Notebook核心任务/会话只需要运行一次),在每个Notebook的单元中创建图形就会直接将PNG格式图形文件嵌入在单元中
(四)将图形保存为文件
Matplotlib可以将图形保存为各种不同的数据格式。用savefig()
命令将图形保存为文件。
savefig()
中,保存的图片文件格式就是文件的扩展名- 注意:保存图形文件时,不需要使用
plt.show()
# 保存为PNG格式
fig.savefig('my_figure.png')
确定文件中是否保存有我们需要的内容,可以用IPython的Image
对象来显示文件内容:
from IPython.display import Image
Image('my_figure.png')
二、两种画图接口
Matplotlib一个特性:它有两种画图接口,一是便捷的MATLAB风格接口,另一个是功能更强大的面向对象接口。
(一)MATLAB风格接口
Matplotlib最初作为MATLAB用户的Python替代品,许多语法都与MATLAB类似。MATLAB风格的工具位于pyplot接口中。
这种接口最重要的特性是有状态的(stateful):它会持续跟踪“当前的”图形和座标轴,所有plt命令都可以应用。
可以用plt.gcf()
(获取当前图形)和plt.gca()
(获取当前座标轴)来查看具体信息。
plt.figure() # 创建图形
# 创建两个子图中的第一个,设置座标轴
plt.subplot(2, 1, 1) # (行、列、子图编号)
plt.plot(x, np.sin(x))
# 创建两个子图中的第二个,设置座标轴
plt.subplot(2, 1, 2)
plt.plot(x, np.cos(x))
(二)面向对象接口
面向对象接口可以适应更复杂的场景,更好地控制图形。在面向对象接口中,画图函数不再受到当前“活动”图形或座标轴的限制,而变成了显示的Figure
和Axes
的方法。
# 先创建图形网络
# ax是一个包含两个Axes对象的数组
fig, ax = plt.subplots(2)
# 在每个对象上调用plot()方法
ax[0].plot(x, np.sin(x))
ax[1].plot(x, np.cos(x))
总结自《Python数据科学手册》