擅长:python、mysql、java
<p>这是因为您的第一个例子,您使用的是<code>ax.polormesh</code>,而不是<code>pyplot.polotmesh</code>(由<code>pylab</code>导入的名称空间),当您调用<code>colorbar()</code>(实际上是<code>plt.colorbar()</code>)时,它失去了跟踪哪个可映射的以及它应该使colorbar指向哪个ax的信息。</p>
<p>因此,添加这些行将使其工作:</p>
<pre><code>import matplotlib.pyplot as plt
fct()
ax=plt.gca() #get the current axes
PCM=ax.get_children()[2] #get the mappable, the 1st and the 2nd are the x and y axes
plt.colorbar(PCM, ax=ax)
</code></pre>
<p><img src="https://i.stack.imgur.com/YrwoB.png" alt="enter image description here"/></p>
<p>现在你提到你的真实情节要复杂得多。您需要确保它是<code>ax.get_children()[2]</code>,或者可以通过查找<code>matplotlib.collections.QuadMesh</code>实例来选择它。</p>