为相同坐标点matplotlib设置注释

为相同坐标点matplotlib设置注释,matplotlib,plot,annotations,label,Matplotlib,Plot,Annotations,Label,我有12个不同的观点,其中10个与前两个有关;我想分别为这10个点中的每个点设置标签,但有时其中两个或多个点具有相同的坐标,但我想显示该坐标的所有标签(不是在彼此的顶部,而是可读的) 如下图所示,两组点具有相同的坐标,它们的标签具有重叠 booleanFunction = np.array(["K","I","H" ,"G", "F", "E" , "D" , "M", "B", "A"]) pointsx = np.empty((rs.shape[1],1)) pointsy = np.emp

我有12个不同的观点,其中10个与前两个有关;我想分别为这10个点中的每个点设置标签,但有时其中两个或多个点具有相同的坐标,但我想显示该坐标的所有标签(不是在彼此的顶部,而是可读的)
如下图所示,两组点具有相同的坐标,它们的标签具有重叠

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')
booleanFunction=np.数组([“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.图(
pl.hold(正确)

plot(X1,Y1,'ro',X2,Y2,'yI我的一个代码,为了避免注释重叠,我做了如下操作:

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方向或两者使用类似的内容。

它只是从点移动了标签。我的问题是两个标签相互重叠(因为它属于两个具有相同坐标的不同点)例如,如果两个重叠点位于点列表的索引2和索引4中,则标签仍将重叠。这里的可能性很小:1.如果点不多,则在x和方向上偏移可能就足够了;2)对点和标签进行排序并使用偏移;3)在循环中检查新点是否与已注释的任何点重叠,并使用
xytext