<p>为了解释<code>how they are unpacked in the fig, ax1,ax2,ax3,ax4,ax5,ax6,ax7,ax8,ax9</code>,我们从一个简单的代码开始:</p>
<pre><code>import matplotlib.pyplot as plt
fig, ax = plt.subplots(3, 3, sharex=True, sharey=True)
</code></pre>
<p>现在我们通过使用python控制台(python解释器)来发现<code>ax</code></p>
<pre><code>in[0]: ax
Out[0]:
array([[<AxesSubplot:>, <AxesSubplot:>, <AxesSubplot:>],
[<AxesSubplot:>, <AxesSubplot:>, <AxesSubplot:>],
[<AxesSubplot:>, <AxesSubplot:>, <AxesSubplot:>]], dtype=object)
</code></pre>
<p>它返回一个维度为3 x 3的数组:</p>
<p>然后,我们分享您的代码片段</p>
<pre><code>((ax1,ax2,ax3),(ax4,ax5,ax6),(ax7,ax8,ax9)) = ax
</code></pre>
<p>或</p>
<pre><code>(ax1,ax2,ax3),(ax4,ax5,ax6),(ax7,ax8,ax9) = ax
</code></pre>
<p>反过来,我们想探索ax的内容是如何分布在您提供的对象名称上的</p>
<p>这是通过在后面的代码中探索<code>=</code>的左侧和右侧之间的关系来实现的,并且再次使用python控制台:</p>
<pre><code>In[1]: ax1==ax[0][0]
Out[1]: True
</code></pre>
<p>等等</p>
<pre><code>In[2]: ax2==ax[0][1]
Out[2]: True
In[3]: ax3==ax[0][2]
Out[3]: True
In[4]: ax4==ax[1][0]
Out[4]: True
In[5]: ax5==ax[1][1]
Out[5]: True
In[6]: ax6==ax[1][2]
Out[6]: True
In[7]: ax7==ax[2][0]
Out[7]: True
In[8]: ax8==ax[2][1]
Out[8]: True
In[9]: ax9==ax[2][2]
Out[9]: True
</code></pre>
<p>所以我们推断,映射已经完成,就好像</p>
<pre><code>array([[<AxesSubplot:>, <AxesSubplot:>, <AxesSubplot:>],
[<AxesSubplot:>, <AxesSubplot:>, <AxesSubplot:>],
[<AxesSubplot:>, <AxesSubplot:>, <AxesSubplot:>]], dtype=object)
=
array([[ax1, ax2, ax3],
[ax4, ax5, ax6],
[ax7, ax8, ax9]], dtype=object)
</code></pre>
<p>因此,映射依赖于将给定对象的序列与第一行、第二行直到最后一行的对象序列相匹配</p>
<p>我们还推断映射是通过生成的数组完成的,并且不是<code>subplots</code>函数本身的一部分</p>
<p>最后,我们应该提到,结果数组<code>ax</code>是一个<code>numpy.ndarray</code>,即使您没有将<code>numpy</code>导入它</p>
<p>我希望上面的插图能说明你的问题</p>
<p>等待你的评论</p>