<p>(我知道这是个老问题,但是…)Colorbars需要一个<code>matplotlib.cm.ScalarMappable</code>,<code>plt.plot</code>生成的行不是标量可映射的,因此,为了生成colorbar,我们需要使标量可映射。</p>
<p>好的。因此,<code>ScalarMappable</code>的构造函数接受一个<code>cmap</code>和一个<code>norm</code>实例。(norms将数据缩放到0-1的范围,cmap是您已经使用过的,它采用0-1之间的数字并返回颜色)。所以在你的情况下:</p>
<pre><code>import matplotlib.pyplot as plt
sm = plt.cm.ScalarMappable(cmap=my_cmap, norm=plt.normalize(min=0, max=1))
plt.colorbar(sm)
</code></pre>
<p>因为您的数据已经在0-1范围内,所以可以将<code>sm</code>创建简化为:</p>
<pre><code>sm = plt.cm.ScalarMappable(cmap=my_cmap)
</code></pre>
<p>希望能帮上忙。</p>
<p><strong>编辑</strong>:对于matplotlib v1.2或更高版本,代码变为:</p>
<pre><code>import matplotlib.pyplot as plt
sm = plt.cm.ScalarMappable(cmap=my_cmap, norm=plt.normalize(vmin=0, vmax=1))
# fake up the array of the scalar mappable. Urgh...
sm._A = []
plt.colorbar(sm)
</code></pre>
<p><strong>编辑</strong>:对于matplotlib v1.3或更高版本,代码变为:</p>
<pre><code>import matplotlib.pyplot as plt
sm = plt.cm.ScalarMappable(cmap=my_cmap, norm=plt.Normalize(vmin=0, vmax=1))
# fake up the array of the scalar mappable. Urgh...
sm._A = []
plt.colorbar(sm)
</code></pre>
<p><strong>编辑</strong>:对于matplotlib v3.1或更高版本,简化为:</p>
<pre><code>import matplotlib.pyplot as plt
sm = plt.cm.ScalarMappable(cmap=my_cmap, norm=plt.Normalize(vmin=0, vmax=1))
plt.colorbar(sm)
</code></pre>