我有三个列表,一个包含一组名为“Atype”的符号(字符),第二个“el”包含一组数字,每个对应于“AType”中元素的位置+1,另一个包含集合名为“XYcoord”的坐标 (x,y)。我想在绘图中注释 AType 的字符,将 AType 的每个元素放置在 XYCoord 中对应的 (x,y) 对指示的位置(在绘图上)。这不是问题,但是当点对之间的距离小于值“BMax”时,我想在字母之间画一条连接线。
到目前为止,这就是我所拥有的:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
for x in range(1, NCenter+1): # NCenter is the number of elements in AType and XYcoord.
xposcoord, yposcoord = XYcoord[x-1][0]/100.0, XYcoord[x-1][1]/100.0
ax.annotate('%s' % (AType[el[x-1]-1]), xy=(xposcoord, yposcoord),
xycoords='axes fraction')
plt.show()
我得到一个看起来像这样的图: 现在,如果字母之间的距离小于 BMax,我想在字母之间画一条连接线。我之前定义了一个函数,它返回点之间的距离“dist_betwn_points(x1,y1,x2,y2)”所以,我知道通过在某处放置一个 if 语句,例如:
if dist_betwn_points(x1, y1, x2, y2) < BMax:
会有所帮助,但我尝试了几种方法,但未能成功定义“ax.annotate(...)”部分以在字母之间画线。谢谢你的帮助!