考虑以下代码:
import matplotlib as mpl
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.subplots()
ax.plot([1, 2, 3, 4], [0, 0.5, 1, 0.2])
ax.annotate("", xy=(0,0), xytext=(1,1), arrowprops=dict(facecolor='black'))
ax.set_ylabel('some numbers')
ax.set_xlim([0,5])
ax.set_ylim([0,2])
plt.show()
它会产生以下结果:
我用鼠标将窗口向下拖动了一点-线完全消失了-即使根据上一张图像判断,它应该仍然可见:
显然,matplotlib认为如果注解行在窗口中不完全可见,也就是说,它是可裁剪的,那么它应该被完全删除。
我认为,如果注解行被剪裁,那么它应该显示到可见的程度。
如何让matplotlib做我想做的,而不是它想做的?
编辑:刚刚发现关于annotation_clip
;如果我将其设置为True,则行为与上面相同;如果我将它设置为False;那么我可以得到:
但这也不是我想要的--我想要的是这个(PS):
我到底怎么弄到这个-你怎么叫它,剪的,没剪的,半剪的,不管它是什么?
1条答案
按热度按时间bfhwhh0e1#
找到了:当绘制轴外的线段箭头时注解问题· Issue #1402 · matplotlib/matplotlib · GitHub
“annotate”的首要目的是用文本和可选的箭头来注解一些东西.而当前行为是一个在大多数情况下都有意义的功能.对于你想要的,你需要调整两件事.首先你应该抑制注解的当前行为你可以通过设置“annotation_clip=False”来实现这一点(更多细节请参见文档)。你还需要用坐标轴的bbox来裁剪箭头。...
因此,OP中的正确示例是: