我有一个pyplot图表,其中每个数据点都标有指向数据点的箭头,并且我对其进行了格式化,以便数据与注释的数据点保持恒定的偏移量。这工作正常,直到我靠近图的边缘,我的一个数据点和注释被切断。我希望有一种方法来格式化我的注释,以便它自动将我的自我定位于我的数据,但仍然保留在我的数字中。下面是我如何格式化我的注释的片段。
for label, x, y in zip(bagOlabels, time, height):
ax.annotate(
label,
xy = (x,y), xytext = (50,-20),
textcoords = 'offset points', ha = 'right', va = 'top',
arrowprops = dict(arrowstyle = '->',
connectionstyle = 'arc3,rad=0')
)
xytext = (50,-20)
是我设置标签偏移的地方。我一直在挖掘,但我还没找到我要找的东西。如果您对如何实现这一点有任何见解,我很乐意听到它。
感谢。
答案 0 :(得分:1)
您可以尝试一些策略:
如果该点位于绘图的右半部分,请将注释放在负偏移处:
for label, x, y in zip(bagOlabels, time, height):
offset = (50, 20)
if x > mid_x:
offset = (-50, 20) # (-50, -20) could be better
ax.annotate(...)
放大图表,使所有注释都适合情节。
在第一种情况下,注释可能彼此重叠。
<强>更新强>:
方法get_xlim
在x轴上返回绘图的限制:
x = range(0, 100)
y = map(lambda x: x*x, x)
fig = pyplot.figure()
ax1 = fig.add_subplot(1, 1, 1)
ax1.plot(x, y, 'r.', x, y, 'r-')
xlim = ax1.get_xlim()