如何填充图表中多个点之间的区域

时间:2015-05-24 06:26:45

标签: python

我在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]]

enter image description here

[[0.0, -0.0], [0.0, 4.0], [2.0, 0.0], [1.5, 2.0]]

enter image description here

2 个答案:

答案 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()