我正在使用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()
?
答案 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
行或列,则ax
是n
- 元组。这个元组可以再次解压缩,
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)
,会引发错误。