擅长:python、mysql、java
<p>警告:除非ticklabels已设置为字符串(如方框图中通常的情况),否则这将不适用于任何比<code>1.1.0</code>更新的matplotlib版本。如果您使用的是当前的github主机,则此操作将不起作用。我还不确定问题出在哪里。。。这可能是无意中的改变,也可能不是</p>
<p>通常,你会按照以下思路做一些事情:</p>
<pre><code>import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# We need to draw the canvas, otherwise the labels won't be positioned and
# won't have values yet.
fig.canvas.draw()
labels = [item.get_text() for item in ax.get_xticklabels()]
labels[1] = 'Testing'
ax.set_xticklabels(labels)
plt.show()
</code></pre>
<p><img src="https://i.stack.imgur.com/5m900.png" alt="enter image description here"/></p>
<p>要理解为什么需要跨越这么多障碍,需要进一步了解matplotlib的结构</p>
<p>Matplotlib故意避免对记号等进行“静态”定位,除非明确要求这样做。假设您希望与绘图交互,因此绘图的边界、记号、标签等将动态更改</p>
<p>因此,不能只设置给定记号标签的文本。默认情况下,每次绘制绘图时,轴的定位器和格式设置程序都会重新设置它</p>
<p>但是,如果定位器和格式化程序设置为静态(<code>FixedLocator</code>和<code>FixedFormatter</code>),则记号标签保持不变</p>
<p>这就是<code>set_*ticklabels</code>或<code>ax.*axis.set_ticklabels</code>所做的</p>
<p>希望这能让我们更清楚地了解为什么更改单个蜱虫标签有点复杂</p>
<p>通常,你真正想做的只是注释一个特定的位置。在这种情况下,请查看<code>annotate</code></p>