import scipy.spatial as sptimport numpy as npimport matplotlib.pyplot as pltplt.rc('font', family='simhei', size=10)    # 设置中文显示,字体大小plt.rc('axes', unicode_minus=False)         # 该参数解决负号显示的问题points = np.random.randint(1,20,(10,2))  # 生成10个二维坐标点,x和y的取值范畴为[1,20)plt.scatter(x=points[:, 0], y=points[:, 1], s=150 ,color='red', marker='o')   # 标出所有样本点   s代表marker的大小  留神前两个参数,不是坐标点,而是x坐标的汇合(二维矩阵points的第一列)和y坐标的汇合(二维矩阵points的第二列)# 执行查找函数tree = spt.cKDTree(data=points)  for point in points:    distances, indexs = tree.query(point, k=2)  # 对每个坐标点,求出与它间隔最近的两个点(最近邻是它自身,要疏忽掉)        # point代表以后点,point[0]即为以后点的x坐标,point[1]即为以后点的y坐标    # points[indexs[1]]代表其余点中距离以后点最近的一个点,points[indexs[1]][0]和points[indexs[1]][1]代表这个点的x和y坐标    x = [point[0], points[indexs[1]][0]]    y = [point[1], points[indexs[1]][1]]    # plt.plot( x,y, color='black')    # 不带箭头的连线。留神前两个参数,不是坐标点,而是x坐标的汇合和y坐标的汇合    plt.arrow( x= point[0],y= point[1], dx=points[indexs[1]][0]-point[0],  dy=points[indexs[1]][1]-point[1] ,width=0.1 ,length_includes_head=True, color='green')    # 带箭头的连线:https://matplotlib.org/3.2.1/api/_as_gen/matplotlib.pyplot.arrow.html     plt.text(sum(x)/2, sum(y)/2,fontsize=10, s="%.2f"%distances[1])  # 在连线上表明最短距离的值。因为x是两个点x坐标的汇合,所以sum(x)/2代表这条线的核心地位,在两头写   (s示意要书写的字符串)plt.show() # 展现图像