Matplotlib文本仅限于绘图区域。

7
我使用matplotlib库来绘制Python中的数据图。在我的图中,我还有一些文本来区分数据。问题是文本超出了图形窗口的边界。是否可以使图形边框在相应位置截断文本,并且只有当我在图中移动时,其余部分的文本才会可见(但仅在图区内)。我使用text()函数来显示文本。
[编辑:]
代码如下:
fig = plt.figure()
ax = fig.add_subplot(111)
# ...
txt = ax.text(x, y, n, fontsize=10)
txt.set_clip_on(False) # I added this due to the answer from tcaswell

可能是matplotlib文本未被裁剪的重复问题。 - tacaswell
2个回答

4

我认为你的文本超出了边界,因为你没有设置图表的限制。为什么不尝试这个呢?

 fig=figure()
 ax=fig.add_subplot(1,1,1)
 text(0.1, 0.85,'dummy text',horizontalalignment='left',verticalalignment='center',transform = ax.transAxes)

这样,您的文本将始终在图表内,并且其左上角将位于您的图表单位为(0.1,0.85)的点处。


3

你只需要告诉文本艺术家不要裁剪:

txt = ax.text(...)

txt.set_clip_on(False)  # this will turn clipping off (always visible)
# txt.set_clip_on(True) # this will turn clipping on (only visible when text in data range)

然而,matplotlib存在一个错误(https://github.com/matplotlib/matplotlib/pull/1885已经修复),这使得它无法正常工作。另一种方法是使用注释中提到的方式:

txt = ax.text(..., clip_on=True)

这个不起作用。我测试过了,但文本仍然超出边界。 - Miguellissimo
1
我认为@Miguellissimo想要set_clip_on(True)(我现在没有任何交互式后端进行测试) - Paul H
True或False,什么都不改变。 - Miguellissimo
1
好的,我明白了。通过在text()函数内设置clip_on=True,我可以获得剪辑结果。这个问题之前已经被@tcaswell在这里回答过:https://dev59.com/EnDYa4cB1Zd3GeqPB5fT - Miguellissimo
我一开始将其设置为“True”,但后来对于OP想要的方向感到困惑。 - tacaswell
@Miguellissimo 在你接受我的答案时,它并没有起作用,所以你不应该接受它。 - tacaswell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接