Matplotlib中的plt和ax都是啥?

栏目: IT技术 · 发布时间: 3年前

Pandas教程写的差不多了,来写一写与数据可视化相关的 Matplotlib 系列教程吧。读过Pandas系列文章的读者应该都知道,我写文章更多的会融入我对这个东西的理解, Matplotlib 系列也是如此。这个系列会涉及 Matplotlib 的一些简单的概念、绘图原理、常见图形的绘制以及一些高阶的绘图技巧。学完之后,期待达到的效果是可以用 Matplotlib 画出这样的图形。

Matplotlib中的plt和ax都是啥?

这篇文章先介绍一下 Matplotlib 的一些简单基本概念和绘图原理,直入正题~

不知道有多少同学和我一样,在刚接触 Matplotlib 时,会被书上的 pltax 以及 subplots 等各种概念所迷惑,心里存在无数个问号,这些究竟是啥?画出来的图不是一样的吗?他们有啥区别?下面就一步步来解答这些迷惑。

概念引入

首先,我们应该要了解一张用 Matplotlib 画出来的图的具体构造,引用一张官方的图:

Matplotlib中的plt和ax都是啥?

我们先主要看图里面红色框的 Figure 和蓝色框的 Axes ,如何理解这两个东西呢?

如果将 Matplotlib 绘图和我们平常画画相类比,可以把 Figure 想象成 一张纸 (一般被称之为画布), Axes 代表的则是 纸中的一片区域 (当然可以有多个区域,这是后续要说到的 subplots ),上一张更形象一点的图。

Matplotlib中的plt和ax都是啥?

Figure 画布中, Axes1 区域画了一张数据仪表盘, Axes2 区域画了柱状图, Axes3 区域绘制了一张地图,相信还是挺好理解的。

两种绘图方式区别

对着两个概念有基本的了解后,就可以来看看 plt.plot()ax.plot() 有何区别了,下面列出了两种用 Matplotlib 绘制图表的方式。

  • plt

# 第一种方式
plt.figure()
plt.plot([1,2,3],[4,5,6])
plt.show()
  • ax

# 第二种方式
fig,ax = plt.subplots()
ax.plot([1,2,3],[4,5,6])
plt.show()

绘图效果如下

Matplotlib中的plt和ax都是啥?

可以看到,不论是用 plt.plot() 还是 ax.plot() ,结果都是一样的

那区别在哪里?

从第一种方式的代码来看,先生成了一个 Figure 画布,然后在这个 画布上隐式生成一个画图区域进行画图

第二种方式同时生成了 Figureaxes 两个对象,然后用 ax 对象在 其区域内 进行绘图

如果从 面向对象编程 (对理解 Matplotlib 绘图很重要)的角度来看,显然第二种方式更加易于解释,生成的 figax 分别对画布 Figure 和绘图区域 Axes 进行控制,第一种方式反而显得不是很直观,如果涉及到子图 零部件的设置 ,用第一种绘图方式会很难受。

在实际绘图时,也更 推荐使用第二种方式。

subplot的绘制

下面通过介绍 subplots 加深对第二种绘图方式的理解

假如现在我要在一张纸上左边画一个折线图,右边画一个散点图,该如何画呢?

首先要有一个画布 Figure ,其次,需要有两个区域 Axes (等价于两个子图 subplot )来画图

# 生成画布和axes对象
# nrows=1和ncols=2分别代表1行和2列
fig,ax = plt.subplots(nrows=1,ncols=2)

因为这里有两个画图区域,所以 ax 对应的是一个列表,存储了两个 Axes 对象。

Matplotlib中的plt和ax都是啥?

然后分别控制左边和右边的绘图区域进行绘图

fig,ax = plt.subplots(nrows=1,ncols=2)
ax[0].plot([1,2,3],[4,5,6])
ax[1].scatter([1,2,3],[4,5,6])
Matplotlib中的plt和ax都是啥?

其实到这里了也会发现,一个 Axes 对象对应了一个 subplot 子图,这些个子图都是画在同一个画布 Figure 之上。

读到这里可能已经对 Matplotlib 绘图有点感觉了,下一篇系列文章会接着介绍 Matplotlib 常见组件的设置,有什么疑问可以点下面的的链接给我留言!

往期文章

Pandas时间序列数据操作

70G上市公司定期报告数据集

5个小问题带你理解列表推导式

文本数据清洗之正则表达式

Python网络爬虫与文本数据分析

综述:文本分析在市场营销研究中的应用

如何批量下载上海证券交易所上市公司年报

Numpy和Pandas性能改善的方法和技巧

漂亮~pandas可以无缝衔接Bokeh

YelpDaset: 酒店管理类数据集10+G

你点的每个“在看”,是对我最大的鼓励


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

两周自制脚本语言

两周自制脚本语言

[日]千叶 滋 / 陈筱烟 / 人民邮电出版社 / 2014-6 / 59.00元

《两周自制脚本语言》是一本优秀的编译原理入门读物。全书穿插了大量轻松风趣的对话,读者可以随书中的人物一起从最简单的语言解释器开始,逐步添加新功能,最终完成一个支持函数、数组、对象等高级功能的语言编译器。本书与众不同的实现方式不仅大幅简化了语言处理器的复杂度,还有助于拓展读者的视野。 《两周自制脚本语言》适合对编译原理及语言处理器设计有兴趣的读者以及正在学习相关课程的大中专院校学生。同时,已经......一起来看看 《两周自制脚本语言》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换