如何以创建平行四边形的方式连接点

How to connect the points in such a way that a parallelogram is created

我有四个坐标 df table:

lat1 lon1 lat2 lon2 lat3 lon3 lat4 lon4
51.071833 6.237204 51.071836 6.237195 51.071833 6.237195 51.071836 6.237204

根据这些数据,我尝试以创建平行四边形的方式连接点。

散点图:

# selecting columns start with 'lat'
xx = df[[col for col in test if col.startswith('lat')]].stack().to_list() 
# selecting columns start with 'lon'
yy = df[[col for col in test if col.startswith('lon')]].stack().to_list() 

plt.scatter(xx,yy)

不幸的是,当我尝试用线连接点时,它不起作用:

plt.scatter(xx,yy)
plt.plot(xx,yy)

预期结果:

我猜是因为积分没有排序。我也试过这个:

points = np.c_[xx, yy]

from sklearn.neighbors import NearestNeighbors
clf = NearestNeighbors(2).fit(points)
G = clf.kneighbors_graph()

import networkx as nx
T = nx.from_scipy_sparse_matrix(G)

order = list(nx.dfs_preorder_nodes(T, 0))

xx = xx[order]
yy = yy[order]

plt.plot(xx, yy)
plt.show()

但还是不正确。

你知道问题出在哪里吗?

谢谢

可以算出四个点的convex hull

import numpy as np
points=np.column_stack((xx,yy))

from scipy.spatial import ConvexHull
hull = ConvexHull(points)
for simplex in hull.simplices:
    plt.plot(points[simplex, 0], points[simplex, 1], 'k-')

结果: