<p>我不认为在一个注释中可以有多种颜色,因为据我所知-<code>annotate</code>只接受一个文本对象作为参数,而文本对象只支持单一颜色。所以,据我所知,没有“本地”或“优雅”的方式可以自动完成这项工作。</p>
<p>但是,有一个解决方法:可以在图形中任意放置多个文本对象。所以我会这样做:</p>
<pre><code>fig1 = figure()
# all the same until the last "annotate":
annotate(r'$e^{-x/5}$'+r'$e^{-x/1}$', xy=(x[10], exp2[10]+exp1[10]), xytext=(40,20),
textcoords='offset points', ha='center', va='bottom',color='white',
bbox=dict(boxstyle='round,pad=0.2', fc='yellow', alpha=0.3),
arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=-0.5',
color='r'))
fig1.text(0.365, 0.62, r'$e^{-x/5}$', ha="center", va="bottom", size="medium",color="blue")
fig1.text(0.412, 0.62, r'$e^{-x/1}$', ha="center", va="bottom", size="medium",color="green")
</code></pre>
<p>我所做的是:</p>
<ol>
<li>我设置了注释<code>color='black'</code></li>
<li>我在0.5,0.5位置创建了两个文本对象(这意味着<code>fig1</code>的中心)</li>
<li>我手动更改了位置,直到它们与由<code>annotate</code>生成的黑色文本大致重叠(这最终是您在对<code>text</code>的两次调用中看到的值)</li>
<li>我设置了注释<code>color='white'</code>,这样就不会影响重叠文本的颜色。</li>
</ol>
<p>输出如下:</p>
<p><img src="https://i.stack.imgur.com/bRJI9.png" alt="multi-colour annotated graph"/></p>
<p>它不是很优雅,它确实需要一些阴谋来微调位置,但它完成了工作。</p>
<p>如果您需要几个绘图,也许有一种方法可以自动放置:如果您不存储<code>fig1</code>对象,那么<code>text</code>的坐标将成为图形中的实际x,y坐标-我发现这有点难处理,但也许它可以使您使用注释的<code>xy</code>坐标自动生成它们?听起来不值得我费心,但如果你能做到,我想看看代码。</p>