保持数据点注释在图上

时间:2012-08-10 20:55:32

标签: matplotlib python-2.7

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

感谢。

1 个答案:

答案 0 :(得分: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. 放大图表,使所有注释都适合情节。

  3. 在第一种情况下,注释可能彼此重叠。

    <强>更新

    方法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()