如何解压缩fig,ax = plt.subplots()是否适用于多个子图?

时间:2017-04-04 11:27:45

标签: python matplotlib

我正在使用python 2.7。

我使用了以下代码并将其应用于我的脚本:http://matplotlib.org/examples/event_handling/data_browser.html

现在,我试图找出一些具体的工作原理。例如:

fig, (ax, ax2) = plt.subplots(2, 1)

据我所知,在python中使用逗号,它用于解包。但是在上面的代码中,我无法理解正在解压缩的内容以及为什么会这样。是:

fig, (ax, ax2) = plt.subplots(2, 1)

与:

相同
fig, ax, ax2 = plt.subplots(2, 1)

来自matplotlib faq的代码?:

fig, ax_lst = plt.subplots(2, 2)  # a figure with a 2x2 grid of Axes

是否自动等于fig = plt.figure()

1 个答案:

答案 0 :(得分:6)

查看plt.subplots() documentation,您会发现它返回

  

图:matplotlib.figure.Figure对象
  ax:Axes对象或Axes个对象的数组。   如果创建了多个子图,ax可以是单个matplotlib.axes.Axes对象或Axes对象数组。可以使用squeeze关键字控制结果数组的大小,参见上文。

用例的示例在文档中的函数定义下面给出。

因此,我们从中了解到plt.subplots的回归始终是一个元组。可以使用逗号

解压缩元组
fig, ax = plt.subplots()

第一个元素是matplotlib.figure.Figure,你可以通过调用plt.figure()来获得它。

元组ax的第二个元素也可以是元组,具体取决于使用的参数。如果创建了n行或列,则axn - 元组。这个元组可以再次解压缩,

fig, (ax1, ax2) = plt.subplots(nrows=2)

如果创建了多行列,ax将成为元组的元组,再次可以使用逗号解压缩

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2)

<小时/> 最后,如在python

a,b,c   = (5, 6, 7)  # works
a,b,c   = (5,(6,7))  # does not work
a,(b,c) = (5,(6,7))  # works

不能执行fig, ax, ax2 = plt.subplots(2, 1),会引发错误。