当使用 text()
在 matplotlib
中绘制文本,然后以交互方式平移图像时,生成的绘制文本不会剪切到数据窗口。这与使用 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()
绘制的“text”则不会。
我不确定这种行为是特性还是错误,但肯定看起来像后者,因为此文本会干扰轴标签等。将 1.2.1 与 TkAgg 后端一起使用。
另一个问题是如何正确地裁剪所有文本,使其不超出数据窗口,而不仅仅是在引用坐标超出数据窗口的情况下。
谢谢!
最佳答案
此行为可以由 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 .支持和反对将文本裁剪到数据区域的观点各有不同。
有一个bug在 mpl 中,这使得 txt.set_clip_on(True)
无法按预期工作。
关于python - matplotlib 文本未被剪裁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15843340/