<p>您可以使用<code>ax.annotate()</code>方法。以下是一个完整的示例:</p>
<pre><code>import random
import matplotlib.pyplot as plt
days = range(365)
# generate random numbers between 4000 and 5200
values = [4000+(random.random() * (5200 - 4000)) for _ in range(365)]
fig, ax = plt.subplots()
plt.plot(days, values)
plt.ylim(3000, 5400)
ax.set_xticks(days[::32])
ax.set_xticklabels(["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
"Aug", "Sep", "Oct", "Nov", "Dec"])
plt.show()
</code></pre>
<p>它生成了这个图:
<a href="https://i.stack.imgur.com/XRqUq.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/XRqUq.png" alt="enter image description here"/></a></p>
<p>现在,让我们在图中注释一些点。我们可以在<code>plt.show()</code>之前使用<code>ax.annotate()</code>方法来实现这一点,如下所示:</p>
<pre><code>...
# annotate some points:
ax.annotate("100th data point", (days[100], values[100]), xytext=(days[100], values[100]-1000),
arrowprops=dict(arrowstyle="->", connectionstyle="angle3,angleA=0,angleB=-90"))
ax.annotate("200th data point", (days[200], values[200]), xytext=(days[200], values[200]-1000),
arrowprops=dict(facecolor='black', shrink=0.05))
# didn't use any arrow styles (just to show how it should look like)
ax.annotate("300th data point", (days[300], values[300]))
plt.show()
</code></pre>
<p>这将生成以下图表:
<a href="https://i.stack.imgur.com/jULUL.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/jULUL.png" alt="enter image description here"/></a></p>
<p>使用<code>ax.annotate()</code>很容易。。。以下是我使用的参数:</p>
<ul>
<li>第一个参数是消息文本</li>
<li>第二个参数是要注释的点的坐标</li>
<li>第三个参数是文本将被写入的位置</李>
<li>第四个论点是箭头应该是什么样子</李>
</ul>
<p>有关更多信息,请查看<a href="https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.annotate.html" rel="nofollow noreferrer">official documentation</a>中的<code>ax.annotate()</code></p>