Matplotlib中的plt和ax都是啥?

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

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

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


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

查看所有标签

猜你喜欢:

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

Nginx高性能Web服务器详解

Nginx高性能Web服务器详解

苗泽 / 电子工业出版社 / 2013-10 / 59.00元

《Nginx高性能Web服务器详解》全面介绍了当前Internet上流行的一款开放源代码的Web服务器——Nginx。全书一共分为四大部分,分别从入门、功能、实现和应用等四个方面对Nginx服务器的知识进行完整阐述,从而满足广大读者在应用Nginx服务器时的普遍性需求。同时也深入剖析了Nginx服务器的工作原理和实现技术,对其中使用到的数据结构和方法进行了详细阐述,并且结合实际的应用情况给出了多个......一起来看看 《Nginx高性能Web服务器详解》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器