0

我有一个 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)是我设置标签偏移的地方。我一直在挖掘,但我还没有找到我要找的东西。如果您对如何实现这一点有任何见解,我很想听听。

谢谢。

4

1 回答 1

1

您可以尝试一些策略:

  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(...)
    
  2. 放大绘图,使所有注释都适合绘图。

在第一种情况下,注释可能会相互重叠。

更新

该方法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()
于 2012-08-10T21:04:41.927 回答