我在python中有一个数组,x,y点用于绘制polygon =可行区域。
[[0.0, 10.0], [0.0, 20.0], [10.0, 0.0], [20.0, 0.0]]
问题是,我需要填补点之间的最大区域。所以我需要重新排序数组,以便我有正确的顺序来绘制最大的多边形。顺序很重要,因为它连接阵列中的邻居点。 我试图通过第一个元素升序排序数组,第二个降序,但似乎没有任何效果。
def scatterplot(points):
points.sort(key=operator.itemgetter(0,1))
x1 = []
y1 = []
for p in range(0,len(points)):
plt.plot(points[p][0],points[p][1],'go',markersize=10)
x1.append(points[p][0])
y1.append(points[p][2])
plt.fill(x1,y1,'red',alpha=1)
plt.show()
我想我在这里缺少数学方面的东西。任何帮助将不胜感激。感谢
[[0.0, 10.0], [0.0, 20.0], [10.0, 0.0], [20.0, 0.0]]
[[0.0, -0.0], [0.0, 4.0], [2.0, 0.0], [1.5, 2.0]]
答案 0 :(得分:2)
似乎您正在寻找convex hull点,或者可能会对alpha-shapes进行一些概括。
答案 1 :(得分:1)
你走了。
import numpy as np
from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt
pts1 = [[0.0, 10.0], [0.0, 20.0], [10.0, 0.0], [20.0, 0.0]]
pts = np.array(pts1)
hull = ConvexHull(pts)
plt.fill(pts[hull.vertices,0], pts[hull.vertices,1],'red',alpha=0.5)
plt.show()