关于 matplotlib 中图和轴的基本问题

basic questions about fig and axes in matplotlib

我是自学python,对matplotlib这个包很迷茫

  1. 绘图时,真的有必要使用下面的代码吗?

    fig = plt.figure()
    

我以为代码是定义一个空的canvas,然后我们可以在canvas中添加子图,但我也看到很多情况下没有包含这段代码,plt.plot() 或 plt.subplot() 直接使用。

  1. ax和axes有什么区别?以前一直以为都是子图变量,后来发现axes在作图时有时作为变量,有时作为参数,例如:

作为变量,从这个post:

fig, axes = plt.subplots(nrows=3, ncols=2, figsize=(12, 8))

作为论据,来自这个post

n = len(fig.axes)

如有任何帮助,我们将不胜感激。

可以在不设置任何变量的情况下进行绘图。示例:

plt.figure()
plt.plot([1, 2], [5, 8])
plt.show()

您必须在某处初始化图形,因此 plt.figure()。正如您所指出的,您还可以使用 plt.subplots():

fig, ax = plt.subplots()
ax.plot([1, 2], [5, 8])
plt.show()

请注意,我们没有设置 ncolsnrows 关键字参数。由于两者的默认值都是 1,我们得到一个轴(这就是我选择变量名称 ax 的原因)。对于 n × 11 × n 子图,plt.subplots() 返回的第二个变量是 one-dimensional 数组。

fig, axes = plt.subplots(ncols=1, nrows=2)
axes[0].plot([1, 2], [5, 8])
axes[1].plot([2, 3], [9, 3])

对于 m × n 个子图 (m, n > 1),axes 是一个 two-dimensional 数组。

fig, axes = plt.subplots(ncols=2, nrows=2)
axes[0][0].plot([1, 2], [5, 8])
axes[1][0].plot([2, 3], [9, 3])
axes[0][1].plot([3, 4], [5, 8])
axes[1][1].plot([4, 5], [9, 3])

使用ax还是axes作为第二个变量的名称是你自己的选择,但是axes表示有多个轴,ax表示只有一个。当然,也有其他构造子图的方式,如your linked post.