matplotlib文本未被剪裁

时间:2013-04-05 20:52:14

标签: python matplotlib

使用matplotlibtext()中绘制文字,然后以交互方式平移图像时,生成的绘制文本不会剪切到数据窗口。这与使用annotate()绘制数据或绘图文本的方式相反,并且由于text()使用数据窗口坐标而没有直观意义。

import matplotlib.pyplot as plt

plt.ion()
fig = plt.figure()
ax = fig.add_subplot(111)

ax.text(0.5, 0.2, 'text')
ax.annotate('anno', (0.5, 0.3))

plt.draw()

从各个方面以交互方式将文本从数据窗口中移出。当参考点穿过数据窗口边界时,annotate()绘制的'anno'被剪裁,而text()绘制的'文本'则没有。{/ p>

我不确定这种行为是一个功能还是一个bug,但肯定看起来像后者,因为这个文本干扰了轴标签等。使用1.2.1与TkAgg后端。

另一个问题是如何正确地将所有文本剪辑到数据窗口之外,而不仅仅是在参考坐标之外。

谢谢!

1 个答案:

答案 0 :(得分:6)

此行为可以由kwarg clip_on控制:

import matplotlib.pyplot as plt

plt.ion()
fig = plt.figure()
ax = fig.add_subplot(111)

txt = ax.text(0.5, 0.2, 'text')
anno = ax.annotate('anno', (0.5, 0.3))
txt_clip = ax.text(0.5, 0.5, 'text-clip', clip_on=True)

plt.draw()

axes.text doc。赞成和反对将文本剪切到数据区域都存在争议。

mpl中有一个bug使txt.set_clip_on(True)无效。