2013-10-23 60 views
1

我有12個不同的點,其中10個都與前兩個;我想分別關於該設置標籤分別10分,但有時兩個或更多的人有相同的座標但我想告訴所有的標籤爲座標(不上對方,但可讀的頂部)
,你可以看到下面的圖片兩個局點都在同一座標和它們的標籤有重疊的對於同一個座標點設置註釋matplotlib

booleanFunction = np.array(["K","I","H" ,"G", "F", "E" , "D" , "M", "B", "A"]) 
pointsx = np.empty((rs.shape[1],1)) 
pointsy = np.empty((rs.shape[1],1)) 
.... 
.... 
.... 
pl.figure() 
pl.hold(True) 
pl.plot(X1, Y1, 'ro', X2, Y2, 'y<') 
pl.plot(pointsx, pointsy, 'b3') 

for i in range (len(pointsx)): 
    pl.annotate(booleanFunction[i], xy=(pointsx[i], pointsy[i]), xycoords='data', textcoords='data') 

dd

回答

2
我的代碼,以避免註解重複我做這樣的事

我一個:

xoffset = 0.1 
switch = -1 
for i in range (len(pointsx)): 
    pl.annotate(booleanFunction[i], xy=(pointsx[i], pointsy[i]), 
       xytext=(pointsx[i]+switch*xoffset, pointsy[i]), 
       xycoords='data', textcoords='data') 

    switch*=-1 

這會寫入您的註釋文本,從要註釋的點開始左移或右移xoffset。當然,你可以在y方向或兩者上使用類似的東西。

+0

它只是移位標籤從點我的問題是兩個標籤彼此重疊(因爲它屬於具有相同的座標的兩個不同點) – Am1rr3zA

+1

如果兩個重疊點是,例如,在指數2和4點列表,然後標籤仍然重疊。這裏你幾乎沒有可能性:1.如果點數不多,在x **和**方向上的偏移可能就足夠了; 2)對點和標籤進行排序並使用偏移量; 3)循環中檢查新點是否與任何已註釋的點重疊,並使用'xytext'移動註釋 –