2012-08-10 69 views
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)是我設置標籤偏移的地方。我一直在挖掘,但我還沒有找到我在找什麼。如果您對如何實現這一目標有所瞭解,我很樂意聽到它。

謝謝。

回答

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. 放大情節所以所有的註釋符合情節。

在第一種情況下,註釋可能會相互重疊。

UPDATE

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() 
+0

中標註一個條件語句,只是可以工作。你知道有什麼方法知道軸的極限(沒有明確設置它們),所以我可以知道什麼時候觸發這個? – deadstump 2012-08-10 21:09:50

+0

@deadstump剛剛更新了答案,以顯示如何獲取圖形的「xlim」。 – 2012-08-10 21:30:37