Matplotlib中的“plt”和“ax”到底是什么?

简介: Matplotlib中的“plt”和“ax”到底是什么?

在幕布中绘图,还是在幕布上的单元格中绘图?

640.png

实际上,作为最流行和最基础的数据可视化库,Matplotlib在某些方面有些令人困惑,这些部分经常有人问起。

  • 我应该在什么时候使用“axes”
  • 为什么有时用“plt”而有时用“ax”?
  • 它们之间有什么区别?

在网上有这么多的例子向人们展示如何使用Matplotlib来绘制这种或那种图表,但我很少看到任何教程提到“为什么”。这可能会使编程经验较少或从其他语言(如R)切换到这种语言的人感到非常困惑。

在本文中,我不会教您使用Matplotlib绘制任何特定图表,但会尝试解释有关Matplotlib的基本但重要的内容——人们通常使用的“plt”和“ax”是什么。

概念

640.png

注意,当我说“plt”时,它并不存在于Matplotlib库中。它之所以被称为“plt”,是因为大多数Python程序员喜欢导入Matplotlib并创建一个名为“plt”的别名,我相信您应该知道这个别名。

importmatplotlib.pyplotasplt

然后,回到我们的主题。为了演示,让我们画一个简单的图表。

importnumpyasnpplt.plot(np.random.rand(20))
plt.title('test title')
plt.show()

640.png

如上面标注的截图所示,当我们使用plt:

  1. 将生成一个figure对象(以绿色显示)
  2. Axes对象是通过绘制的折线图(红色显示)隐式生成的
  3. 图中的所有元素(如x和y轴)都在Axes对象中呈现(蓝色显示)

这也就表示:

  • figure就像一张纸,你可以画任何你想画的东西
  • 我们必须在“单元格”中绘制图表,在此处,Axes是坐标轴
  • 如果我们只画一个图形,我们不需要先画一个“单元格”,只要在纸上画就可以了。我们可以使用plt.plot(…)

显式绘制“单元格”

640.png

当然,我们可以在“纸”上显式地绘制一个“单元格”,以告诉Matplotlib我们将在这个单元格中绘制一个图表。然后,我们有以下代码。

fig, ax=plt.subplots()
ax.plot(np.random.rand(20))
ax.set_title('test title')
plt.show()

640.png

结果完全一样。唯一的区别是我们明确地绘制了“单元格”,这样我们就能够得到FigureAxes对象。

640.png

实际上,当我们只想绘制一个图形时,没有必要“绘制”单元格。但是,您必须注意到,当我们想在一个图中绘制多个图时,必须这样做。

n_rows=2n_cols=2fig, axes=plt.subplots(n_rows, n_cols)
forrow_numinrange(n_rows):
forcol_numinrange(n_cols):
ax=axes[row_num][col_num]
ax.plot(np.random.rand(20))
ax.set_title(f'Plot ({row_num+1}, {col_num+1})')fig.suptitle('Main title')
fig.tight_layout()
plt.show()

640.png

在这个代码片段中,我们首先声明了要“绘制”的行和列的数量。2×2表示我们要画4个单元格。

640.png

然后,在每个单元格中,我们绘制一个随机的折线图,并根据其行号和列号分配一个标题。请注意,我们使用的是axis实例。

在此之后,我们在“paper”上定义一个“Main title”,即Figure实例。所以,我们有这个超级标题,它不属于任何“单元格”,但在幕布上。

最后,在调用show()方法之前,我们需要要求Figure实例通过调用它的tight_layout()方法自动在单元格之间提供足够的填充。

总结

640.png

希望现在你能更好地理解pltax到底是什么。

基本上,plt是matplotlib的一个常见别名。pyplot被大多数人使用。当我们使用plt(比如plt.line(…))绘制一些东西时,我们隐式地创建了一个图形实例和图形对象内部的坐标轴。当我们只想画一个图的时候,这是非常方便的。

但是,我们可以显式地调用plt .subplot()来获得Figure对象和Axes对象,以便对它们执行更多的操作。当我们想在一个图形上画多个子图时,通常需要使用这种方法。

另外,下面是用于FigureAxes类的Matplotlib官方API引用。强烈建议大家自己去看看它们,并尝试一些方法,以确保自己理解得更深。

https://matplotlib.org/api/axes_api.html?highlight=axes#matplotlib.axes.Axes

https://matplotlib.org/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure


目录
相关文章
|
搜索推荐 Python
【现学现用】matplotlib画图(plt与ax的关系add_subplot与subplots等)
【现学现用】matplotlib画图(plt与ax的关系add_subplot与subplots等)
269 0
【现学现用】matplotlib画图(plt与ax的关系add_subplot与subplots等)
|
4月前
|
Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
|
4月前
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
在数据科学领域,数据可视化是连接数据与洞察的桥梁,能让复杂的关系变得直观。本文通过实战案例,介绍Python数据分析师必备的Matplotlib与Seaborn两大可视化工具。首先,通过Matplotlib绘制基本折线图;接着,使用Seaborn绘制统计分布图;最后,结合两者在同一图表中展示数据分布与趋势,帮助你提升数据可视化技能,更好地讲述数据故事。
72 1
|
1月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
75 8
|
4月前
|
存储 数据可视化 数据挖掘
揭秘!Matplotlib与Seaborn联手,如何让Python数据分析结果一目了然,惊艳全场?
在数据驱动时代,高效直观地展示分析结果至关重要。Python中的Matplotlib与Seaborn是两大可视化工具,结合使用可生成美观且具洞察力的图表。本文通过分析某电商平台的商品销量数据集,展示了如何利用这两个库揭示商品类别与月份间的销售关系及价格对销量的影响。首先使用Matplotlib绘制月份销量分布直方图,再借助Seaborn的箱线图进一步探索不同类别和价格区间下的销量稳定性。
85 10
|
4月前
|
数据可视化 Python
Python中的数据可视化:使用Matplotlib绘制图表
【9月更文挑战第11天】在这篇文章中,我们将探索如何使用Python的Matplotlib库来创建各种数据可视化。我们将从基本的折线图开始,然后逐步介绍如何添加更多的功能和样式,以使您的图表更具吸引力和信息量。无论您是数据科学家、分析师还是任何需要将数据转化为视觉形式的专业人士,这篇文章都将为您提供一个坚实的起点。让我们一起潜入数据的海洋,用视觉的力量揭示其背后的故事。
71 17
|
4月前
|
数据可视化 数据挖掘 API
使用Python进行数据可视化:探索Matplotlib和Seaborn库
【9月更文挑战第19天】在数据科学领域,将复杂的数据集转换成直观、易懂的图形是一项基本而关键的技能。本文旨在通过Python编程语言介绍两个强大的数据可视化库——Matplotlib和Seaborn,以及它们如何帮助数据分析师和研究人员揭示数据背后的故事。我们将从基础概念讲起,逐步深入到高级技巧,确保无论读者的背景如何,都能获得必要的知识和启发,以在自己的项目中实现有效的数据可视化。
|
4月前
|
机器学习/深度学习 数据采集 监控
Pandas与Matplotlib:Python中的动态数据可视化
Pandas与Matplotlib:Python中的动态数据可视化
|
5月前
|
数据可视化 物联网 区块链
探索Python中的数据可视化:使用Matplotlib和Seaborn绘制图表探索未来:区块链、物联网与虚拟现实的融合趋势与应用前景
【8月更文挑战第30天】本文旨在引导读者通过Python编程语言,利用Matplotlib和Seaborn库,轻松掌握数据可视化技术。文章以浅显易懂的语言,结合实用的代码示例,从基础的图表绘制到高级定制功能,逐步深入讲解如何在数据分析中运用这些工具。无论你是编程新手还是希望提升可视化技能的开发者,都能在这篇文章中找到有价值的信息,让你的数据“活”起来。
|
4月前
|
数据可视化 数据处理 Python
Matplotlib:Python绘图利器之王
Matplotlib:Python绘图利器之王
30 0